我的循环运行了很长时间(几个小时)。用户可能会查看当前结果,认为运行迭代足够,然后希望在自然结束之前停止循环,但由于某些最终结果处理而没有中断整个程序(没有“ Ctrl + C”)是必要的。
为此,我添加了在工作目录中创建特定“停止”文件的可能性。在每个循环中,代码都会验证该文件是否存在,如果是这种情况,它将结束循环。我不知道这种解决方案是否有效,是否存在更好的解决方案。
示例
i = 0
while i < 1000 and not(path.isfile(path.join(self.wrkdir,'stop'))) :
DoSomeStuff
i += 1
FinalizingStuff
答案 0 :(得分:1)
如果不使用Ctrl+C
的唯一原因是您认为它将停止程序的所有操作,那么最好的解决方案是使用它而不是查看文件。
仅仅是因为您可以像其他任何代码一样catch
将此异常(称为KeyboardInterrupt
)进行任意操作。
import time
try:
while True:
time.sleep(0.1)
except KeyboardInterrupt:
print('Ok, user is pissed with our loop, go further')
finally:
# if some resources need to be cleaned
pass
print('Here we are, nothing is lost')