[英]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.