【问题标题】:Python Threading timer not working across suspendPython 线程计时器在挂起期间不起作用
【发布时间】:2014-07-18 22:05:27
【问题描述】:

我正在尝试创建一个每 60 秒与服务器同步的程序。我用来执行此操作的代码如下所示:

threading.Timer(60, self.sync, [""]).start()

非常简单,效果很好。问题是如果我决定暂停机器一段时间然后再回来,它就不再工作了。就好像计时器停止工作一样。我怀疑这与计时器感知的现实世界时间的差距有关,但我不知道如何让它发挥作用。

我正在制作的应用程序是针对 OSX 的,所以也许有一个我可以访问的系统级计时器?

【问题讨论】:

标签: python multithreading python-multithreading


【解决方案1】:

我不知道这是否会更好,但你可以试一试:

import time

def call_sync(freq, meth):
    cur_time = time.time()
    while True:
        while (time.time() - cur_time) < freq:
            yield None
        meth()
        cur_time = time.time()


def sync():
    print("synced")

def main():
    timer = call_sync(60, sync)
    while True:
        time.sleep(1)
        next(timer)

if __name__ == '__main__':
    main()

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 2014-09-15
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多