是否有一种方法,例如,打印Hello World!每n秒?
例如,程序将遍历我所拥有的任何代码,然后在5秒后(使用time.sleep())执行该代码。我会用这个来更新文件,而不是打印Hello World。
例如:
startrepeat("print('Hello World')", .01) # Repeats print('Hello World') ever .01 seconds
for i in range(5):
print(i)
>> Hello World!
>> 0
>> 1
>> 2
>> Hello World!
>> 3
>> Hello World!
>> 4
我对这个主题的拙见,是Alex Martelli的答案的概括,使用start()和stop()控件:
from threading import Timer
class RepeatedTimer(object):
def __init__(self, interval, function, *args, **kwargs):
self._timer = None
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.is_running = False
self.start()
def _run(self):
self.is_running = False
self.start()
self.function(*self.args, **self.kwargs)
def start(self):
if not self.is_running:
self._timer = Timer(self.interval, self._run)
self._timer.start()
self.is_running = True
def stop(self):
self._timer.cancel()
self.is_running = False
用法:
from time import sleep
def hello(name):
print "Hello %s!" % name
print "starting..."
rt = RepeatedTimer(1, hello, "World") # it auto-starts, no need of rt.start()
try:
sleep(5) # your long-running job goes here...
finally:
rt.stop() # better in a try/finally block to make sure the program ends!
特点:
只有标准库,没有外部依赖
即使计时器已经启动/停止,也可以安全地多次调用Start()和stop()
要调用的函数可以有位置参数和命名参数
您可以随时更改间隔,它将在下次运行后生效。args、kwargs甚至function也一样!