Python:如何设想循环在正常结束之前中断

时间:2018-11-30 10:48:32

标签: python loops

我的循环运行了很长时间(几个小时)。用户可能会查看当前结果,认为运行迭代足够,然后希望在自然结束之前停止循环,但由于某些最终结果处理而没有中断整个程序(没有“ Ctrl + C”)是必要的。

为此,我添加了在工作目录中创建特定“停止”文件的可能性。在每个循环中,代码都会验证该文件是否存在,如果是这种情况,它将结束循环。我不知道这种解决方案是否有效,是否存在更好的解决方案。

示例

i = 0
while i < 1000 and not(path.isfile(path.join(self.wrkdir,'stop'))) :
    DoSomeStuff
    i += 1

FinalizingStuff

1 个答案:

答案 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')