簡體   English   中英

Python 多處理:主進程的名稱

[英]Python multiprocessing: name of the main process

我正在使用 multiprocessing 模塊在不同的進程上運行一段代碼。 在代碼中的某個時刻,我需要知道代碼是由主進程執行還是由創建的子進程之一執行。

在我嘗試過的所有情況下,當前進程的名稱始終是“MainProcess”:

>>> import multiprocessing
>>> multiprocessing.current_process().name
'MainProcess'

這是一個我可以依靠的python約定來確保我的代碼段由主進程運行(假設沒有其他進程以這種方式命名)? 否則,有沒有其他方法可以用來知道哪個進程正在執行一段代碼?

謝謝!

主進程似乎與子進程具有不同的type 主進程是mulitprocessing.process._MainProcess而子進程是multiprocessing.process.Process 這可能是測試它的更好方法。

現在,由於_MainProcess類型的名稱有一個前導下划線,它意味着“私有”,這意味着它是一個可以更改的實現細節。 這似乎不太可能,但您可以檢查當前進程是否不是Process類型Process而不是檢查它是否屬於_MainProcess類型。

雖然可以使用multiprocessing.current_process() ,但也許更好的替代方法是使用multiprocessing.parent_process() 對於主進程,它將返回None

它是在 Python 3.8 中添加的,因此在提出問題時不可用。

暫無
暫無

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

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