我正在使用MULTIPROCESSING來查找我的需求。 當我運行時,我得到一個pid(可能是父母!我不知道該怎麼稱呼它),然後與他們自己的pid和第一個進程的引用id進行協作處理。通過python腳本獲取其父pid來終止進程及其子/共同進程
現在我需要通過殺死第一個進程來殺死所有這些進程,那麼這將是最好的方式。這也是一種生活方式。
情景就像是
ps -ef |grep py
我得到
2222 0001 first.py #0001 is os process
4323 2222 second.py
4324 2222 third.cgi
4324 2222 fourth.py
4325 2222 fifth.cgi
4326 2222 sixth.py
2223 0001 newfirst.py ############new first process from another script started
4327 2223 newsecond.cgi
4328 2223 newthird.py
4329 2223 newfourth.cgi
現在我通過殺死進程(當按下停止按鈕)
kill -6 2222 ###from terminal
那麼只有first.py正在死亡,其餘的協同程序仍在運行。當然,我可以從終端殺死其他進程,但我想以更pythonic的方式執行它(通過運行一個腳本,當有人按STOP按鈕表單前端設計運行.py文件時會觸發)
現在,我殺了first.py(因爲我不想讓它的公司運行了),我怎麼能殺死所有這些共同進程,但其他newfirst.py和它的公司不應該受到干擾。
什麼,我拿出來是這麼遠
import os
pid = os.getpid()
os.system('kill -9 ' + pid)
所以如何從第一進程ID 2222濾除協同進程並殺死他們。
我也嘗試過使用psutil,但在名稱後面傳遞名稱來殺死並不是很有說服力。
我檢查了subprocess.popen方法,但失敗了,現在我不符合邏輯,請建議。
如果需要其他信息,請做評論。
可以使用信號'os.killpg(pgid,sig)'來殺死進程組。在你的情況'os.killpg(pid,9)' – Kadir