如何定期运行任务而不会中断整个程序



我有一个程序,如果它收到输入,它将执行任务,然后直接返回以等待输入。我正在尝试添加一项功能,该功能每5分钟一次ping游戏服务器,如果结果每次更改,它都会通知我。问题是,如果我试图实施此功能,则该程序会停止此功能,并且无法继续输入。我相信我需要多线程/多处理,但是我没有经验,经过将近2个小时的研究和搏斗,我无法弄清楚。

我试图使用我在这里找到的递归程序,但无法正确调整它,但我觉得这是我最接近的地方。我相信我可以将其作为两个单独的脚本运行,但是随后我必须将数据输送到周围,这将变得更加混乱。对于其他程序的其余部分来说,最好将所有内容保留在一个脚本上。

'''python
def regular_ping(IP):
    last_status = None
    while True:
        present_status = ping_status(IP) #ping_status(IP) being another
                                         #program that will return info I 
                                         #need
        if present_status != last_status:
            notify_output(present_status) #notify_output(msg) being a 
                                          #program that will notify me of
                                          # a change
            last_status = present_status
        time.sleep(300)
'''

我希望这一点代码自行运行,通知我每5分钟的更改(如果有的话(,而我的其余程序也会运行并接受输入。相反,该程序停止在此功能上,并且不会超越它。任何帮助将不胜感激,谢谢!

您可以为此使用线程或过程。但是,由于这不是CPU绑定的操作,因此专门的过程的开销是不值得的。因此,线程就足够了。您可以按以下方式实现它:

import threading
thread = threading.Thread(target=regular_ping, args=(ip,))
thread.start()
# Rest of the program
thread.join()

最新更新