簡體   English   中英

使用多處理從其他流程獲取數據

[英]Get Data from Other Processes using Multiprocessing

(語言是Python 3)

我正在使用模塊multiprocessing並使用Pool編寫程序。 我需要在所有進程之間共享的一些變量。 父進程將初始化此變量,並將其作為參數傳遞給p.map() 我希望子進程更改此變量。 這樣做的目的是因為子流程工作的第一部分應該並行完成(不需要任何其他流程數據的計算工作)。 但是,流程工作的第二部分需要按順序完成,一個接一個地處理,因為它們正在寫入文件,並且該文件的內容應該井井有條。 我希望每個過程都可以等到其他過程完成后再繼續。 我將用變量記錄整個程序的“進度”,例如,當第一個過程完成向文件的寫入時,它將使變量增加一個。 我希望這是開始寫入文件的下一個過程的信號。 但是我需要某種waituntil()函數來使進程等待,直到Value變量指示它是寫入文件的“轉身”為止。

這是我的兩個問題:

  1. 我需要一個子進程可以編輯的變量,並且子進程實際上可以獲取該變量的值。 我應該使用哪種類型的變量? 我應該使用ValueManager還是其他?

  2. 我需要過程等待,直到上述變量等於某個值,這表明該輪到他們寫文件了。 我可以使用任何一種waituntil()函數嗎?

您正在尋找的被稱為同步 有許多不同的同步原語可供選擇。

您永遠不要嘗試自己編寫同步原語,因為正確地做到這一點並不容易!

在您的情況下, 事件條件可能都合適。

暫無
暫無

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

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