如何为循环中的每次迭代设置计时器?
for i in range(0,n):
subprocess.call()
如果调用时间超过指定时间,则应取消调用,循环应继续下一次迭代。因此,它将阻止循环卡在函数/子进程调用中。
答案 0 :(得分:2)
您可以使用Popen
而不是call
在子进程执行时继续使用Python代码。您可以使用signal
设置计时器。把它们放在一起就可以了:
def handler(signum, frame):
raise MyError
signal.signal(signal.SIGALRM, handler)
for i in range(0,n):
p = subprocess.Popen(...)
try:
signal.alarm(1) # 1 second timer
p.wait()
signal.alarm(0) # clear the timer
except MyError:
p.kill()