【发布时间】:2019-07-29 16:53:44
【问题描述】:
from concurrent.futures import ProcessPoolExecutor
import time
def foo(num):
time.sleep(0.5)
print(num)
if __name__ == "__main__":
while True:
with ProcessPoolExecutor(max_workers=8) as exe:
exe.map(foo, range(1,4))
我正在尝试使用模块ProcessPoolExecutor。并且在主进程启动一段时间后,我想杀死进程使用linux kill 命令kill -9 main_process_pid。然后我发现只有主进程被杀死了,而子进程仍然处于活动状态。
user 41502 41004 5 16:16 pts/202 00:00:00 python demo.py
user 42009 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42010 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42011 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42012 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42013 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42015 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42025 41502 0 16:16 pts/202 00:00:00 python demo.py
user 42026 41502 0 16:16 pts/202 00:00:00 python demo.py
在我运行kill -9 41502 之后,它变成了
user 45109 1 0 16:17 pts/202 00:00:00 python demo.py
user 45110 1 0 16:17 pts/202 00:00:00 python demo.py
user 45111 1 0 16:17 pts/202 00:00:00 python demo.py
user 45112 1 0 16:17 pts/202 00:00:00 python demo.py
user 45113 1 0 16:17 pts/202 00:00:00 python demo.py
user 45114 1 0 16:17 pts/202 00:00:00 python demo.py
user 45115 1 0 16:17 pts/202 00:00:00 python demo.py
user 45116 1 0 16:17 pts/202 00:00:00 python demo.py
在关闭主进程时我应该怎么做才能杀死所有子进程?
【问题讨论】: