Я вызываю команду, используяКак убить подпроцесс, вызванный с помощью subprocess.call в python?
subprocess.call(cmd, shell=True)
Команда не прекращается автоматически. Как его убить?
Я вызываю команду, используяКак убить подпроцесс, вызванный с помощью subprocess.call в python?
subprocess.call(cmd, shell=True)
Команда не прекращается автоматически. Как его убить?
Я думаю, что вы ищете subprocess.terminate()
. Если вместо call
вы используете Popen
, он не блокируется, и вы сможете возобновить выполнение. Конечно, если вы сразу вызовете terminate
, он прекратится, прежде чем он что-нибудь сделает. Documentation here
С subprocess.call
ждет завершения команды, вы не можете ее убить программным путем. Ваш единственный ресурс - убить его вручную с помощью специальной команды ОС, такой как kill
.
Если вы хотите программно убить процесс, вам нужно будет начать процесс с subprocess.Popen
, а затем terminate
. Примером этого является ниже:
import time, subprocess
t1 = time.time()
p = subprocess.Popen('sleep 1', shell=True)
p.terminate()
p.wait()
t2 = time.time()
print(t2 - t1)
Этот скрипт занимает около .002s
для выполнения (а не ~ 1s, если команда сна не было прекращено).