首页 > 解决方案 > Python:终止子进程而不访问 subprocess.Popen 对象?

问题描述

我有一个脚本,我只需使用该subprocess模块在 Python 中调用一个子进程,如下所示:

import subprocess
process = subprocess.Popen(['python3', 'some_Python_script.py']

我希望能够终止/终止这个进程。但是,在创建我的进程后,在我的应用程序中我无法访问该process对象,因此无法按照此处所述使用process.kill.

但是,有没有办法“存储”进程的一些唯一 ID,并且以后能够操纵/终止它(如果它仍在运行)?

例如,我在想类似的东西

process = subprocess.Popen(['python3', 'some_Python_script.py']
process_ID_string = process.id
...
...
*later on*
subprocess.kill(process_id = process_ID_string)

subprocess模块可以做到这样的事情吗?

标签: pythonterminalsubprocessterminate

解决方案


import subprocess, os, signal

process = subprocess.Popen(['python3', 'some_Python_script.py']
processId = process.pid

# later on
os.kill(processId, signal.SIGTERM)

推荐阅读