Python: завершить подпроцесс, не имея доступа к объекту subprocess.Popen? - PullRequest
0 голосов
/ 10 марта 2019

У меня есть скрипт, посредством которого я просто вызываю подпроцесс в Python, используя модуль subprocess, например:

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

Я хочу иметь возможность завершить / убить этот процесс. Однако после создания моего процесса в моем приложении я теряю доступ к объекту process и, следовательно, не могу его обычно прекратить, как описано в здесь , используя process.kill.

Однако, есть ли способ «сохранить» какой-то уникальный идентификатор процесса, и с его помощью можно будет манипулировать / завершать его позднее (если он все еще работает)?

Например, я думаю о чем-то вроде

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

Возможно ли что-то подобное с модулем subprocess? Буду признателен за любые предложения по этому вопросу.

1 Ответ

2 голосов
/ 10 марта 2019
import subprocess, os, signal

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

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