赞
踩
在数量较大的事件中(高并发)python的会受GIL(全局解释锁)影响变慢,GIL只存在于Cpython这个解释器中,使用其他其他解释器不受影响;推荐使用进程,但是进程并不是完美的,应为进程的最小单位是线程,一个进程还包含其他线程,下面是一个简单例子说明在高并发中cpython解释器中线程处于劣势:
import multiprocessing import threading from time import ctime import time def t1(): for i in range(1000000): print("{}start:{}".format(i,ctime())) def t2(): for i in range(1000000): print("{}start1:{}".format(i, ctime())) '''a = threading.Thread(target=t1) b = threading.Thread(target=t2) a.start() b.start() a.join() b.join()''' '''a = multiprocessing.Process(target=t1) b = multiprocessing.Process(target=t2)''' if __name__ == '__main__': T = time.time() print("------------------") a = multiprocessing.Process(target=t1) b = multiprocessing.Process(target=t2) a.start() b.start() a.join() b.join() te = time.time() print("using time: " + str(te - T) + "s") #1. 32.24247074127197s不使用线程、进程 #2. 39.16404151916504s使用线程 #3. 23.140634298324585s使用进程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。