【发布时间】:2015-12-31 14:14:04
【问题描述】:
我有一个脚本,它运行一个无限循环并将内容添加到数据库中并执行一些我不能在中途停止的事情,所以我不能只是按 Ctrl+C 并停止它。
我希望能够以某种方式停止 while 循环,但让它在停止之前完成最后一次迭代。
让我澄清一下:
我的代码如下所示:
while True:
do something
do more things
do more things
我希望能够在结束或开始时中断 while 循环,但不能在两件事之间中断,因为那样会很糟糕。
而且我不希望它在每次迭代后询问我是否要继续。
感谢您的精彩回答,我非常感激,但我的实施似乎没有奏效:
def signal_handler(signal, frame):
global interrupted
interrupted = True
class Crawler():
def __init__(self):
# not relevant
def crawl(self):
interrupted = False
signal.signal(signal.SIGINT, signal_handler)
while True:
doing things
more things
if interrupted:
print("Exiting..")
break
当我按下 Ctrl+C 时,程序会一直忽略我。
【问题讨论】:
-
你有没有办法在你的脚本中确定工作是否已经完成(最后一个)!如果你这样做,那么在条件中使用它并使用 break 语句
-
在这种情况下的工作是一个网络爬虫,可以无限期地继续下去。我希望能够告诉它停止爬行,但不仅仅是在页面中间中断它。
-
让它在它停止之前完成它的最后一次迭代?你怎么知道它是否完成了这项工作?
-
嗯...您可以添加脚本的重要部分吗?这可能有助于其他人了解您想要什么:P
-
问题很明确:完成这个循环的迭代,然后退出。谁认为这是题外话?
标签: python infinite-loop