Python线程计时器无法跨挂起工作

时间:2014-05-29 11:52:15

标签: python multithreading python-multithreading

我尝试创建一个每60秒与服务器同步的程序。我用来做的代码如下:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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()
相关问题