Существует как минимум 2 способа сделать это с помощью psutil , если вы знаете PID процесса.
Предполагая, что процесс создан так:
import subprocess
subp = subprocess.Popen(['progname'])
... вы можете получить время его создания в занятом цикле следующим образом:
import psutil, time
TIMEOUT = 60 * 60 # 1 hour
p = psutil.Process(subp.pid)
while 1:
if (time.time() - p.create_time) > TIMEOUT:
p.kill()
raise RuntimeError('timeout')
time.sleep(5)
... или просто, вы можете сделать это:
import psutil
p = psutil.Process(subp.pid)
try
p.wait(timeout=60*60)
except psutil.TimeoutExpired:
p.kill()
raise
Кроме того, пока вы занимаетесь этим, вас могут заинтересовать следующие дополнительные API:
>>> p.status()
'running'
>>> p.is_running()
True
>>>