当我将对象放入Queue中,是否需要创建深层副本并将其放入Queue中?
当我将对象放入Queue中,是否需要创建深层副本并将其放入Queue中?
如果您可以确保该对象仅在一个线程中处理,那么这不是问题。但如果您不能,建议使用深层复制。
如果您将对象放入队列中,则队列对象不会自动执行此操作。
请参阅Refs
请记住,对象需要能够被pickled (Multiprocessing Basics)
通常更有用的是能够使用参数生成进程,并告诉它要做什么工作。与线程不同的是,要向 multiprocessing Process 传递参数,必须能够使用 pickle 对其进行序列化。此示例向每个 worker 传递了一个数字,因此输出会更有趣一些。
Thread
对于 multiprocessing
不是直接相关的。在 Python2 中,multiprocessing.Queue
会复制对象,因为它需要对其进行序列化,但要注意竞争条件(请参见其他答案中的链接)。最后,书籍链接已经失效,因为它不包含所引用的页面。 - user1071847