【问题标题】:Can't kill child process using ProcessPoolExecutor?无法使用 ProcessPoolExecutor 杀死子进程?
【发布时间】: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

在关闭主进程时我应该怎么做才能杀死所有子进程?

【问题讨论】:

    标签: python process


    【解决方案1】:

    【讨论】:

    • 为什么pkill -9 -P 41502 不起作用?你能帮我弄清楚kill -- -41502 pkill -9 -P 41502之间的区别吗
    猜你喜欢
    • 2020-09-22
    • 2022-01-03
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多