前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python MultiProcessing标准库使用Queue通信的注意要点

python MultiProcessing标准库使用Queue通信的注意要点

作者头像
Ryan_OVO
发布2023-10-18 20:11:37
1380
发布2023-10-18 20:11:37
举报
文章被收录于专栏:程序随笔程序随笔

今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue。因为看queue顺眼,就想着拿queue实现,后来,被坑了....于是有了这篇文章。 我按照 python标准库之MultiProcessing库的研究 (1) 里面的代码来的,结果就是不断的出错,死过就是不出结果,看看程序:

代码语言:javascript
复制
from multiprocessing import Pool, queues
import os


def func(msg, q):
    q.put([msg, None, 'hello'])
    print(os.getpid())


if __name__ == '__main__':
    q = queues.Queue()
    pool = Pool(4)
    for i in range(4):
        pool.apply_async(func, (i, q, ))
    print("Mark~ Mark~ Mark~~~~~~~~~~~~~~~~~~~~~~")
    print(q.qsize())
    pool.close()
    pool.join()   # 调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束
    for i in range(q.qsize()):
        print(q.get())

其实没什么,就是在apply_async函数中加了个Queue对象而已。 可是死活就是不行。后来查了这篇文章 python多进程编程:使用Queue,Pool启动子进程失败问题

后来在官网仔细找了下,发现:

so,就是我需要再加上一个manager,赶明再试试...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档