以下是:
蟒蛇计划:
from time import time, sleep
from sched import scheduler
def daemon(local_handler):
print 'hi'
local_handler.enter(3, 1, daemon, (local_handler,))
if __name__ == '__main__':
handler = scheduler(time, sleep)
handler.enter(0, 1, daemon, (handler,))
handler.run()
python循环+睡眠:
from time import sleep
while True:
print 'hello'
sleep(3)
sched和loop+sleep有什么区别,sched会在系统时间改变时停止?
一个很大的区别是多个任务之间的延迟是根据需要计算的。这意味着你的循环将需要:
- 需要的时间
print("hello")
或执行您需要执行的任务
- 需要时间
sleep(3)
而如果您将调度程序中的顺序更改为:
local_handler.enter(3, 1, daemon, (local_handler,))
do_the_task
您的下一个任务将在 3 秒后运行,或者在 3 秒后立即运行do_the_task
如果花费的时间超过 3 秒。
因此,决定实际上归结为:您希望任务每 X 个时间单位执行一次,还是在执行之间有 X 个时间单位的间隔。
假设您使用的是典型的(time, sleep)
参数,如果系统时间更改,您将在预期时间后运行下一个任务(sleep
会处理这个问题,除非同时收到一些信号),但您的下一个计划任务时间将被转移。我相信下一次执行时间不会是您通常期望的时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)