【问题标题】:Properway to terminate continuous loop - python终止连续循环的正确方法 - python
【发布时间】:2016-02-20 13:14:29
【问题描述】:

如果这是重复的,让我首先说抱歉。指向正确线程的链接会有所帮助,我只是无法通过搜索找到我想要的东西。

我有一个 python 应用程序,它检查我们网络中不同事物的状态,然后写入 XML 文件。它有一个贯穿所有检查的恒定循环。有时需要停止或重新启动应用程序才能进行更改。我不想在编写文件或执行任务时完全关闭应用程序或重新启动应用程序。我可以使用哪些策略来安全地终止主循环?我可以将某些东西传递给正在运行的对象吗?

【问题讨论】:

标签: python xml loops


【解决方案1】:

除了他的评论中提到的关于信号的建议(https://docs.python.org/3/library/signal.html)@Torxed,您还可以将一些数据传递给程序并验证它是否在每次循环迭代中设置(我的意思是传递给标准输入,请参见此处的 cmets:@987654322 @)

另一种方法是创建一个文件并在每次迭代时检查它是否存在。如果没有 - 停止应用程序。

【讨论】:

    【解决方案2】:

    一个常见的用法是在循环中放置一个检查点。在最简单的层面上,您只需测试特定文件是否存在,如果存在则退出循环:

    stopfile = '.stop'
    
    while True:
        # check if we are required to stop
        if os.path.exists(stopfile):
            print("Stopping because %s exists" % (stopfile,))
            break
        # real stuff
    

    在更复杂的场景中,您可以使用任何进程间工具,例如套接字或信号,并在循环中以相同的方式对其进行测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多