Tôi muốn sử dụng tiến trình con để chạy chương trình, nhưng tôi cần giới hạn thời gian thực hiện. Ví dụ, nếu nó chạy hơn 2 giây, tôi muốn giết nó.Làm thế nào để hạn chế thời gian thực hiện của chương trình khi sử dụng tiến trình con?
Đối với các chương trình phổ biến, lệnh kill() hoạt động tốt. Nhưng nếu tôi cố gắng chạy /usr/bin/time something
, kill() không thể thực sự giết chương trình.
Nhưng mã của tôi dưới đây có vẻ không hoạt động tốt, chương trình vẫn đang chạy.
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()
nhân đôi với http://stackoverflow.com/questions/1191374/subprocess-with-timeout – starrify