gpt4 book ai didi

Python,期待无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:34 25 4
gpt4 key购买 nike

我的代码可能会出现无限循环。我希望能够在代码中停止这个,有什么可以做到的吗?像这样的东西:

for i to range(0,5):
timer = on
run(x)
#while run is running
if timer.time > 30:
exit run(x)
print("out of time ")
print(timer.time)

所以输出可能是:3, 2, out of time 30, 2, out of time 30

恐怕这可能需要线程,我曾在 C 和 Java 中尝试过用于学校,但从未尝试过 python。

最佳答案

几个选项:

  1. 如果您可以修改run 的“无限”循环,请让它检查时间。这可能是最简单的。
  2. 如果在 Linux/UNIX 上,您可以将 signal.alarmSIGALRM 处理程序一起使用,以便在固定时间后中断。
  3. 你可以产生一个单独的线程和kill the other thread当时间流逝。这是相当讨厌的,只有在 Windows 上(或关心可移植性)并且无法修改 run 时才应使用。
  4. 您可以将 run 生成到一个单独的进程中,并在时间到期时终止该进程(例如使用 multiprocessing)。

下面是一个使用 signal.alarm 中断计算的例子:

import signal

class TimeoutException(Exception):
pass

def alarm_handler(*args):
raise TimeoutException()

def tryrun(func, timeout=30):
oldhandler = signal.signal(signal.SIGALRM, alarm_handler)
try:
signal.alarm(timeout)
func()
except TimeoutException:
print "Timeout"
else:
print "Success"
finally:
signal.alarm(0) # disarm alarm
signal.signal(signal.SIGALRM, oldhandler)

import time
tryrun(lambda: time.sleep(10), 5) # prints Timeout
tryrun(lambda: time.sleep(2), 5) # prints Success

关于Python,期待无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com