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