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

我知道multiprocessing.Manager()以及如何将其用于创建共享对象.特别是可以在工作人员之间共享的队列.有question、question和question.
但是,这些链接没有提及为什么我们可以使用继承在进程之间共享.据我了解,在这种情况下仍然只能复制队列.
解决方法:
python中的Queue实现依赖于系统管道将数据从一个进程传输到另一个进程以及一些信号量,以保护对该管道的读写.
由于操作系统限制,管道在进程中被视为打开文件,并且只能在生成时与子进程共享.
对于早期版本的python,信号量也被视为仅应在生成时共享的文件(至少在基于UNIX的系统中).
由于通常无法共享这2个子对象,因此一旦启动队列就无法对其进行腌制并将其发送到子进程.
但是,对于某些操作系统和最新版本的python,可以共享Connection并创建可共享的信号量.因此,理论上您可以创建自己的队列,该队列可以在进程之间共享.但是它涉及很多黑客行为,可能不是很安全.
本文标题为:Python多重处理:RuntimeError:“队列对象仅应通过继承在进程之间共享”


基础教程推荐
- python – Nginx没有服务我的Flask网站 2023-11-16
- python – Django Unittests客户端登录:在测试套件中失败,但在Shell中失败 2023-11-16
- 在Windows中将带有星号的多个文件传递给python shell 2023-11-16
- python-如何使用子进程运行virtualenv软件包安装 2023-11-12
- python-挂钩并在Windows消息队列中记录“所有内容” 2023-11-10
- Windows下Python环境搭建 2023-09-03
- Python 3.7 安装 Centos 2023-09-04
- 详解TensorFlow训练网络两种方式 2023-08-11
- Pytorch中的Tensorboard与Transforms搭配使用 2023-08-11
- Ubuntu 18.04 切换使用Python3 2023-11-15