gpt4 book ai didi

Python 多处理副本或引用?

转载 作者:行者123 更新时间:2023-12-04 18:04:58 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

经理使用 Proxy objects表示过程中的状态。 Queue 类就是这样一个代理。然后通过 pickled states 共享状态:

An important feature of proxy objects is that they are picklable so they can be passed between processes.

关于Python 多处理副本或引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28594457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com