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

我知道multiprocessing.Manager()以及如何将其用于创建共享对象.特别是可以在工作人员之间共享的队列.有question、question和question.但是,这些链接没有提及为什么我们可以使用继承在进程之间共享.据我了解,在这种...

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

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

解决方法:

python中的Queue实现依赖于系统管道将数据从一个进程传输到另一个进程以及一些信号量,以保护对该管道的读写.

由于操作系统限制,管道在进程中被视为打开文件,并且只能在生成时与子进程共享.
对于早期版本的python,信号量也被视为仅应在生成时共享的文件(至少在基于UNIX的系统中).

由于通常无法共享这2个子对象,因此一旦启动队列就无法对其进行腌制并将其发送到子进程.

但是,对于某些操作系统和最新版本的python,可以共享Connection并创建可共享的信号量.因此,理论上您可以创建自己的队列,该队列可以在进程之间共享.但是它涉及很多黑客行为,可能不是很安全.

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

基础教程推荐