做个多现场AI训练工程,涉及到主程序创建多个子进程a,每个子进程a会创建子进程b。
主程序在杀死子进程a时并不会完全杀死子进程a的子代,导致程序阻塞。
因此,需要对子进程a的所有子代进行遍历并杀死掉
process=None
def test_process():
process = subprocess.Popen(cmd_list, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
...
def thread1_create():
process=multiprocessing.Process(target=test_process)
process.daemon=True
process.start()
process.join()
def thread2_kill():
global process
parent = psutil.Process(process.pid)
for child in parent.children(recursive=True):
child.terminate()
child.kill()