Python 多进程进程池Queue进程通信

from multiprocessing import Pool,Manager
import time

def hanshu(queue,a):
    n = 1
    while n<50:
        # print('\r正在工作%d'%a,end='')
        n+=1
        # 【步骤3】往队列中发送一条消息
        queue.put(a)
        time.sleep(2)

def main():
    print('执行main函数')
    for i in range(0,10):
        po.apply_async(hanshu,args=(q,i)) # 【步骤2】向进程池中添加任务,hanshu是做任务的函数,(i,)是传参,是个元组 q是队列



if __name__ == '__main__':
    q=Manager().Queue() #使用Manager中的Queue方法 【步骤1】创建一个队列
    po = Pool(10) # 创建进程池 并限定最多同时运行10个进程
    main()
    print('---start-----')

    po.close() # 关闭进程池不再接受新的进程任务
    # po.join() #等待进程池里面的任务完成
    while True:
        name=q.get()
        print('\r收到消息 与任务不堵塞',name ,end='')

 

posted @ 2018-10-22 12:50  zhangdingqu  阅读(1052)  评论(0编辑  收藏  举报