这是我写的测试用例代码,可以执行后, kill -9 主线程后,子线程并没有退出,仍然在执行,但是如果 ctrl+c,却可以停掉所有的线程。请问如何在父进程结束时,自动回收子进程,谢谢!
如果有 pip 模块能解决此问题就更好了。
这是我的测试用例代码:
# -*- coding: utf-8 -*-
# Author: Ztj
import time
from multiprocessing import Process
class Listen(object):
def listen(self, ):
"""监听"""
for i in range(3):
p = Process(name='Job', target=self.listen_callback, args=(i,))
p.start()
@staticmethod
def listen_callback(i):
"""定时进程回调"""
while True:
print('正在执行中(%s)......' % i)
time.sleep(1)
if __name__ == '__main__':
listen = Listen()
listen.listen()
之前也解决过这样的问题,用到了psutil模块,原理就是子进程定期检查父进程是否存在,不存在就退出。例子如下: