import time
from multiprocessing import Process
from multiprocessing import Manager
from multiprocessing import Pool
def write(queue):
for i in range(10):
print(f'往队列中放入元素{i}')
queue.put(i)
time.sleep(1)
def read(queue):
while not queue.empty():
data=queue.get()
print(f'往队列中取出元素{data}')
time.sleep(1)
if __name__ == '__main__':
q = Manager().Queue() # 队列,用于进程池间的通信
p = Pool() # 创建进程池
p.apply_async(write, args=(q,)) # 进程池异步提交任务write
p.apply_async(read,args=(q,)) # 进程池异步提交任务read
p.close() # 关闭进程池
p.join() # 阻塞主进程,要在clos方法后
print('main')
进程池间的通信是要通过队列要沟通的
队列是引用进程中的Manager().Queue()
刚开始操作的时候,老是出错,到最后才知道是队列这个模块用错了