Python多重处理:RuntimeError:“队列对象仅应通过继承在进程之间共享”

del bao

我知道multiprocessing.Manager()以及如何将其用于创建共享对象。特别是可以在工作人员之间共享的队列。有这个问题,这个问题和这个问题

但是,这些链接没有提及为什么我们可以使用继承在进程之间共享。据我了解,在这种情况下,仍然只能复制队列。

托马斯·莫罗

Queuepython中实现依赖于一个系统pipe将数据从一个进程传输到另一个进程,而某些进程则semaphores可以保护对此进程的读写pipe

pipe如在该过程打开的文件处理,并且仅可以在产卵时间的子进程共享由于OS的限制,。
对于semaphorespython的早期版本,它们也被视为仅应在生成时共享的文件(至少在基于UNIX的系统中)。

由于这两个子对象通常无法共享,因此Queue一旦启动就无法对其进行腌制并将其发送给子流程。

但是,对于某些操作系统和最新版本的python,可以共享Connection和创建sharable Semaphore因此,理论上您可以创建自己的Queue流程之间可以共享的。但是它涉及很多黑客行为,可能不是很安全。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章