Python 调度程序与循环 + 睡眠

2023-12-02

以下是:

蟒蛇计划:

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(使用前将#替换为@)

Python 调度程序与循环 + 睡眠 的相关文章

随机推荐