2016-07-13 3 views

ответ

2

Я думаю, что вы ищете subprocess.terminate(). Если вместо call вы используете Popen, он не блокируется, и вы сможете возобновить выполнение. Конечно, если вы сразу вызовете terminate, он прекратится, прежде чем он что-нибудь сделает. Documentation here

2

С 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, если команда сна не было прекращено).