【发布时间】:2014-05-16 21:12:41
【问题描述】:
我有一个递归运行的程序,虽然在 95% 的情况下这不是问题,但有时如果我做的事情花费了太长时间,我会达到递归限制。在我努力转换为和迭代代码的过程中,我决定尝试以下方式:
while True:
do something
#check if task is done
if done:
print 'ALL DONE'
break
else:
time.sleep(600)
continue
我已经测试了我的代码,它运行良好,但我想知道这种方法是否存在固有的问题?如果运行时间过长,它会吃掉内存或使盒子崩溃吗?
提前致谢!
编辑:
我所说的“做某事”是定期检查日志文件中的某些关键字,因为数据会不断地写入日志文件。一旦编写了这些行,这发生在不同的时间长度,我让脚本执行某些任务,例如将特定行复制到单独的文件中。
我的原始程序有两个函数,一个定期调用自身,直到找到关键字,然后调用“dosomething”函数。完成后的 do something 函数将调用原始函数,这将发生直到任务完成或我达到递归限制
【问题讨论】:
-
它在做什么?根据您正在做的事情,可能有也可能没有更好的方法。看起来您正在等待某事完成,在这种情况下,您的代码可能会有一个接口自动等待它完成,而无需不断检查进度。
-
你希望通过睡眠而不是立即返回循环来获得什么?
-
@jwodder 会无缘无故地占用 CPU 时间。
-
do something是什么?
标签: python time infinite-loop