进程间资源不共享,但是需要操作相同的资源,这个时候需要进程间通信会使用到队列;
multiprocessing.Quene()和queue.Queue()区别:
- Queue.Queue是进程间通信;用于一个进程中,每个线程之间进行通讯;
- multiprocess.Queue是跨进程通信队列
注意:
- 使用时候要通过参数进行传递到各个进程任务之中;
看一下代码:
from multiprocessing import Process,Queue
q = Queue() #q作为全局变量
for i in range(1000):
q.put(i)
def work1(q):
while not q.empty():
print('----work1获取数据{}'.format(q.get()))
def work2(q):
while not q.empty():
print('----work2获取数据{}'.format(q.get()))
if __name__ == '__main__':
p1 = Process(target=work1, args=(q,))
p2 = Process(target=work2, args=(q,))
p1.start()
p2.start()
运行部分结果:
----work1获取数据145
----work2获取数据146
----work1获取数据147
----work2获取数据148
----work1获取数据149
----work2获取数据150
----work1获取数据151
----work2获取数据152
----work1获取数据153
----work2获取数据154
----work1获取数据155