繁体   English   中英

在Python 3中实现超时的最简单方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM