无法使用ProcessPoolExecutor终止子进程?

2024-04-25 20:11:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在关闭主进程时,我应该如何杀死所有子进程?你知道吗


Tags: frompyimportfootime进程demomain