[英]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.