无限循环和用户输入作为终止

时间:2010-08-10 21:52:28

标签: python loops signals copy-paste infinity

我有我的代码,它确实运行到无穷大。我想要的是,如果在unix命令窗口中,如果用户输入一个ctrl C,我希望程序完成当前循环,然后退出循环。所以我希望它能够突破,但我希望它能够完成当前的循环。使用ctrl C ok?我应该查看不同的输入吗?

1 个答案:

答案 0 :(得分:3)

要正确而准确地执行此操作,有点复杂。

基本上你想要捕获Ctrl-C,设置一个标志,然后继续直到你检查那个标志的循环开始(或结束)。这可以使用signal模块完成。幸运的是,有人已经这样做了,您可以使用示例linked中的代码。

修改:根据您的评论,BreakHandler课程的典型用法是:

ih = BreakHandler()
ih.enable()
for x in big_set:
    complex_operation_1()
    complex_operation_2()
    complex_operation_3()
    # Check whether there was a break.
    if ih.trapped:
        # Stop the loop.
        break
ih.disable()
# Back to usual operation