准确地在一分钟内触发Python函数

use*_*831 4 python time schedule

我有一个功能,我想在每一分钟触发 - 在00秒.它通过空中发射一个数据包到一个将安装在墙上的哑显示器.

我知道我可以用一个循环来强制它,但这看起来有点刺耳.

我尝试过使用sched但最终会每分钟添加一秒.

我有什么选择?

Chr*_*nus 7

您可以尝试APScheduler,一个用于Python的cron样式调度程序模块.

从他们的例子:

from apscheduler.scheduler import Scheduler

# Start the scheduler
sched = Scheduler()
sched.start()

def job_function():
    print "Hello World"

sched.add_cron_job(job_function, second=0)
Run Code Online (Sandbox Code Playgroud)

job_function每分钟都会跑.


Tiz*_*zee 5

如果您测量代码执行所需的时间,然后从 60 的睡眠时间中减去该时间,会怎样?

import time

while True:
    timeBegin = time.time()

    CODE(.....)

    timeEnd = time.time()
    timeElapsed = timeEnd - timeBegin
    time.sleep(60-timeElapsed)
Run Code Online (Sandbox Code Playgroud)

  • 60-timeElapsed 有可能为负数,这会引发 IOError。time.sleep(max(0, 60-timeElapsed)) 可以解决这个问题。 (4认同)