繁体   English   中英

是否可以从python多处理模块的进程之间自动共享队列对象?

[英]Is queue object automatically shared among Processes from python multiprocessing module?

我最近开始使用Python多处理模块。 我了解队列的解释,但是最近我在https://pymotw.com/2/multiprocessing/communication.html上发现,不需要将arg作为args传递给Proccess构造函数方法,例如

p = Process(target=f, args=(q,)),

相反,它们似乎是全局共享的。 我以为只有在我们管理队列的情况下,即

queue = manager.Queue()

有人可以帮我理解吗?

在Unix中,使用fork()创建一个子进程。

在Windows中,通过使用特殊参数调用相同的脚本来创建子进程。

在这两种情况下,子进程中都可能存在q变量,因为它继承了状态,或者因为相关代码在执行到达worker函数之前已经运行。

但这还不够。 需要在各个过程之间建立IPC,以发挥其作为通信渠道的作用。 否则,它只是一个常规的本地对象。

如有疑问,请参阅官方文档该文档是权威的信息源,通常具有卓越的质量。 使用multiprocessing ,坚持使用文档尤为重要,因为由于其古怪的性质,各种事物似乎都可以工作,但会以无法预测的方式中断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM