[英]In Python multiprocessing, why is child process name __mp_main__? Is there a way to override it with a custom name?
[英]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.