[英]Simplest way to implement time-out in Python 3
如何为循环中的每次迭代设置计时器?
for i in range(0,n):
subprocess.call()
如果调用花费的时间超过指定的时间,则应将其取消,并且循环应继续进行下一个迭代。 因此,它将防止循环卡在函数/子过程调用中。
您可以使用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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.