雖然在使用multiprocessing
模塊Python中的項目工作,我觀察到了一些奇怪的行爲。的Python:子進程退出留下它的線程運行
讓我們假設我的主程序P1使用multiprocessing
模塊創建過程P2。該過程P2創建的線程本身叫p2_t1。有一個在P2創建這個線程之後沒有代碼塊,所以退出(我不是調用exit,所以它只是從主返回)離開p2_t1晃來晃去。我可以在P1創建子進程的P2
p = Process(target=RunService,args=(/*some args*/),name="p2")
示例代碼通過strace
示例代碼證實了這一點:
def RunService():
try:
/*do something here*/
except Exception,e:
/*create a new thread*/
/*nothing here so basically this process exits leaving the thread dangling*/
然而,這並不如果一個線程發生(呼叫是p1_t1)的內P1創建。 P1亙古不退出,直到創建的線程p1_t1運行。
實施例的代碼在這種情況下爲P1
try:
/*do something here*/
except Exception,e:
/*create a new thread*/
/*nothing here so basically process should end*/
在這種情況下的處理不列入出口和繼續工作,直到線程正在運行。任何解釋?
使用反引號('\'')爲行內代碼,而不是大膽。 – katrielalex
這不是代碼,所以我想大膽的:) ..將遵守下一次 – auny