簡體   English   中英

是否可以從python多處理模塊的進程之間自動共享隊列對象?

[英]Is queue object automatically shared among Processes from python multiprocessing module?

我最近開始使用Python多處理模塊。 我了解隊列的解釋,但是最近我在https://pymotw.com/2/multiprocessing/communication.html上發現,不需要將arg作為args傳遞給Proccess構造函數方法,例如

p = Process(target=f, args=(q,)),

相反,它們似乎是全局共享的。 我以為只有在我們管理隊列的情況下,即

queue = manager.Queue()

有人可以幫我理解嗎?

在Unix中,使用fork()創建一個子進程。

在Windows中,通過使用特殊參數調用相同的腳本來創建子進程。

在這兩種情況下,子進程中都可能存在q變量,因為它繼承了狀態,或者因為相關代碼在執行到達worker函數之前已經運行。

但這還不夠。 需要在各個過程之間建立IPC,以發揮其作為通信渠道的作用。 否則,它只是一個常規的本地對象。

如有疑問,請參閱官方文檔該文檔是權威的信息源,通常具有卓越的質量。 使用multiprocessing ,堅持使用文檔尤為重要,因為由於其古怪的性質,各種事物似乎都可以工作,但會以無法預測的方式中斷。

暫無
暫無

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

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