我想使用子进程来运行程序,我需要限制执行时间.例如,如果运行时间超过2秒,我想杀死它.
对于常见程序,kill()运行良好.但是如果我尝试运行/usr/bin/time的东西,kill()就不能真正杀死程序.
我的下面的代码似乎不能很好地工作.该程序仍在运行.
import subprocess
import time
exec_proc = subprocess.Popen("/usr/bin/time -f \"%e\\n%M\" ./son > /dev/null", stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell = True)
max_time = 1
cur_time = 0.0
return_code = 0
while cur_time <= max_time:
if exec_proc.poll() != None:
return_code = exec_proc.poll()
break
time.sleep(0.1)
cur_time += 0.1
if cur_time > max_time:
exec_proc.kill()