簡體   English   中英

Python多處理副本還是參考?

[英]Python multiprocessing copy or reference?

我在了解如何在流程之間交換數據(多處理實現)時遇到問題。 它的行為就像參數作為引用傳遞(或復制-取決於它是可變變量還是可變變量)一樣。 如果是這樣,如何在流程之間實現?

下面的示例代碼如果在一個進程中執行(例如,ConsumerProcess是一個線程而不是一個進程),對我來說是可以理解的,但是如果在兩個單獨的進程中執行,它將如何工作?

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

multiprocessing庫或者允許您使用共享內存,或者在您的Queue類的情況下,可以使用管理器服務來協調進程之間的通信。

請參閱文檔中的“ 進程管理器 之間共享狀態”部分。

管理者使用代理對象來表示流程中的狀態。 Queue類就是這樣的代理。 然后通過pickle d狀態共享狀態

代理對象的一個​​重要功能是可拾取的,因此可以在進程之間傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM