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

标签 python loops signals copy-paste infinity

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

最佳答案

要正确并完全按照您的意愿执行此操作有点复杂。

基本上您想要捕获 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

关于python - 无限循环和用户输入作为终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453757/

相关文章:

python - Pandas 数据框中的多个 if else 条件并派生多列

python - 如何从 openerp 中的帐户报告打印单一合作伙伴分类帐报告

python - 如果不指定跟踪器的 udp 协议(protocol),我无法通过 libtorrent-python 接收磁力链接元数据

linux - 连接硬编码目录和用户创建的文本文件会在不应该的时候添加根级路径

c - sigsuspend 与处理程序执行期间传递的其他信号

c - 收到警报信号时,read() 系统调用不会失败

python - 类型提示固定长度但相当大的固定长度的元组

c# - 在 C# 中执行 .. While 循环?

javascript - 如何更改从数组中提取时间间隔的innerHTML?

c - 如何更改子进程中的信号处理程序?