Python中使用GIL(解釋器全局鎖),使得對於任何Python程序,不管有多少的處理器,任何時候都總是隻有一個線程在執行。因而,在python中使用多線程很難提升效率。
所以,使用多進程!!
直接上代碼:
import multiprocessing
def f(i, q):
q.put(i, block=False)
def p(q):
processes = []
p1 = multiprocessing.Process(target = f, args = (1,q,))
p2 = multiprocessing.Process(target = f, args = (2,q,))
processes.append(p1)
processes.append(p2)
for p in processes:
p.daemon = True
p.start()
p.join()
while not q.empty():
ss = q.get()
print ss
if __name__ == '__main__':
q = multiprocessing.Queue() #使用隊列傳遞數據
p(q)
以上代碼的執行結果:
1
2