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

在Python3中实现超时的最简单方法,python,python-3.x,timer,Python,Python 3.x,Timer,如何为循环中的每个迭代设置计时器 for i in range(0,n): subprocess.call() 如果调用花费的时间超过指定的时间,则应取消调用,循环应继续到下一次迭代。因此,它将防止循环卡在函数/子进程调用中。您可以在子进程执行时使用Popen而不是调用,让Python代码继续运行。您可以使用设置计时器。把这些放在一起,你会得到如下结果: def handler(signum, frame): raise MyError signal.signal(signa

如何为循环中的每个迭代设置计时器

for i in range(0,n):
    subprocess.call()

如果调用花费的时间超过指定的时间,则应取消调用,循环应继续到下一次迭代。因此,它将防止循环卡在函数/子进程调用中。

您可以在子进程执行时使用
Popen
而不是
调用
,让Python代码继续运行。您可以使用设置计时器。把这些放在一起,你会得到如下结果:

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()

“若某件事情花费的时间超过了指定的时间,那个么循环应该继续到下一次迭代。”你们能解释一下吗?什么是“某物”?“继续前进”是什么意思?在我看来,这个问题在表达想法的意义上是非常清楚的。让我们一个接一个地执行多个任务。如果任务需要更长时间,则让该任务取消,并可能启动另一个任务。