相关疑难解决方法(0)

subprocess:删除Windows中的子进程

在Windows上,subprocess.Popen.terminate调用win32 TerminalProcess.但是,我看到的行为是我尝试终止的进程的子进程仍在运行.这是为什么?如何确保进程启动的所有子进程都被终止?

python windows subprocess process kill-process

38
推荐指数
5
解决办法
2万
查看次数

Python多处理:异常时如何关闭多处理池

我正在使用python多重处理来拆分较长的进程之一并并行运行。它工作正常,除非其中一个子进程中有例外,在这种情况下,进程池未关闭,我仍然可以在服务器上看到这些进程。

这是代码:

from multiprocessing import Pool
pool = Pool(processes=4)
from functools import partial
param_data = "Test Value"
func = partial(test_function, param_data)
r = pool.map(func, range(3))
pool.close()

def test_function(param_data,index):
   try:
      # The process here;
   except Exception as e:
      # Close the process pool;
Run Code Online (Sandbox Code Playgroud)

在给pool.close除块之外时,它说

NameError:全局名称“池”未定义

我尝试使用以下代码杀死Exception上的进程。

    except Exception as e:
       import os
       import signal
       pid = os.getpid()
       os.kill(pid, signal.SIGTERM) 
Run Code Online (Sandbox Code Playgroud)

但是我仍然可以在服务器上看到该进程。这仍然不是最好的解决方案,因为这只会终止遇到异常的子进程,而其他进程仍会继续。

我希望所有进程都在完成时终止,无论它们是否遇到异常。

我正在运行Python2.7

ps:我无法在服务器上安装像psutil这样的新库,我正在尝试使用标准python库的解决方案。

我在这个论坛上检查了一些类似的问题,例如自动终止进程和子进程,但它们并不是真正的问题。

python multiprocessing kill-process

6
推荐指数
1
解决办法
4358
查看次数