我在Python中調用一個shell腳本fom,它產生了多個子進程。如果兩分鐘後未完成,我想終止該過程及其所有子項。在subprocess.TimeoutExpired後拋出Python子進程的子節點拋出
有沒有什麼辦法可以做到與subprocess.run或我必須回去使用Popen?由於運行阻塞,我無法將pid保存在某個地方,以額外的命令殺死孩子。一個簡短的代碼示例:
try:
subprocess.run(["my_shell_script"], stderr=subprocess.STDOUT, timeout=120)
except subprocess.TimeoutExpired:
print("Timeout during execution")
是,'popen'是首選。請注意,殺死孩子的孩子不是必須的(取決於'my_shell_script')。他們可以分離。 – freakish
在我的情況下,我絕對希望他們遇難,因爲他們產生很高的負載。我可能會回覆使用Popen併爲我的進程獲得一個pid以殺死進程組。 – Raptor