Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python多处理队列对对象put安全吗?_Python_Queue_Multiprocessing_Deep Copy - Fatal编程技术网

python多处理队列对对象put安全吗?

python多处理队列对对象put安全吗?,python,queue,multiprocessing,deep-copy,Python,Queue,Multiprocessing,Deep Copy,当我将对象放入时,是否需要创建对象的深度副本,然后放入队列?如果您可以确保仅在一个线程中处理该对象,这不是问题。但如果不能,建议使用深度副本 如果将对象放入队列中,队列对象不会自动执行此操作 参见参考文献 请记住,对象需要能够被pickle() 通常更有用的是,能够生成一个带有参数的进程来告诉它要做什么工作。与线程不同,要将参数传递给多处理进程,参数必须能够使用pickle序列化。本例向每个工作者传递一个数字,因此输出更有趣一些 当OP使用多处理时,这是否相关?你的意思是什么?博客文章和

当我将对象放入时,是否需要创建对象的深度副本,然后放入队列?

如果您可以确保仅在一个线程中处理该对象,这不是问题。但如果不能,建议使用深度副本

如果将对象放入队列中,队列对象不会自动执行此操作

参见参考文献

请记住,对象需要能够被pickle()

通常更有用的是,能够生成一个带有参数的进程来告诉它要做什么工作。与线程不同,要将参数传递给多处理进程,参数必须能够使用pickle序列化。本例向每个工作者传递一个数字,因此输出更有趣一些


当OP使用多处理时,这是否相关?你的意思是什么?博客文章和书页提到了深度复制的问题,而不仅仅是共同的多处理。对不起,我被第一个链接对多线程和处理的可互换使用弄糊涂了。
Thread
多处理
没有直接关系
multiprocessing.Queue
(至少在python2中)在序列化对象时创建对象的副本,但要注意竞争条件(请参阅其他答案中的链接)。最后,图书链接断开,因为它不包含引用的页面。@user1071847哪个链接断开了?我可以访问所有这些。我相信对象在传输到接收过程之前已被腌制(即您没有处理同一副本)@Majid请接受答案并关闭问题。