Python多处理复制或引用?

时间:2015-02-18 21:39:33

标签: python multiprocessing

我在理解如何在进程之间交换数据时遇到问题(多处理实现)。它表现为参数作为引用传递(或复制 - 取决于它是可变的还是可变的变量)。如果是这样,如何在流程之间实现?

如果在一个进程中执行(例如,ConsumerProcess是一个线程而不是一个进程),那么下面的示例代码对我来说是可以理解的,但是如果它在两个单独的进程中运行,它是如何工作的?

tasks = Queue()
consumerProcess = ConsumerProcess(tasks)  # it is subprocess for main
tasks.put(aTask)  # why does it behave as reference?

1 个答案:

答案 0 :(得分:0)

multiprocessing库允许您使用共享内存,或者在您的Queue类中使用协调进程间通信的管理器服务。

请参阅文档中的Sharing state between processesManagers部分。

管理员使用Proxy objects来表示流程中的状态。 Queue类就是这样的代理。然后通过pickled states分享州:

  

代理对象的一个​​重要特性是它们是可选择的,因此它们可以在进程之间传递。