每n毫秒调用一个不带.after或线程的函数的计时器

2024-10-01 17:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个每隔n毫秒调用一个函数的计时器。 这不应该在endloss循环中(虽然是真的)或类似的情况

import threading

def printit():
   threading.Timer(5.0, printit).start()
   print "Hello, World!"

或者

^{pr2}$

因为我有一个可以交互的图形用户界面。这样我就可以停止计时器了。

有什么想法吗? 谢谢!


Tags: 函数importhelloworlddef情况图形用户界面start
2条回答

您的问题明确地说不要使用after,但这正是使用tkinter的方式(假设您的函数不超过几百毫秒完成)。例如:

def printit():
    if not stopFlag:
        root.after(100,printit)
...
def stop():
    global stopFlag
    stopFlag = False
...
printit()

上述操作将导致printit每隔100ms调用一次,直到另一段代码将stopFlag设置为False。在

注意:如果printit花费的时间超过100ms,这将不能很好地工作。如果函数花费了两个时间,您只能选择将函数移动到线程中,或者将其移动到另一个进程。如果printit花费的时间不超过100ms,那么上面的代码就足以让UI保持响应。在

来自Python Documentation

from threading import Timer
def hello():
    print "hello, world"

t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed`

相关问题 更多 >

    热门问题