在Python 3中每x秒执行一次命令

时间:2017-12-09 12:27:12

标签: python-3.x timer scheduler

在Python 3中,我编写了一个程序,检查自上次命令启动以来是否超过30秒并执行这些命令。同时,它会检查执行10秒的其他命令,此外,条件必须为真。

from datetime import datetime

lastExecute1 = datetime(1, 1, 1)
lastExecute2 = datetime(1, 1, 1)

while True:
    utcnow = datetime.utcnow()
    if (utcnow - lastExecute1).total_seconds() >= 30:
        runCommands1()
        lastExecute1 = utcnow
    if (utcnow - lastExecute2).total_seconds() >= 10 and someCondition:
        runCommands2()
        lastExecute2 = utcnow

该程序有效,但处理器负载很高(我在Raspberry Pi上运行)并且处理器已加热。

这就是我使用sched模块(https://stackoverflow.com/a/474543/6523409)的原因。这个程序也可以,但处理器负载较低,这很好。问题是前一个程序的延迟只有几毫秒,现在是半秒(命令运行在0:0.0,0 :30.5,1:1.0,1:31.5 ...而不是0:0.0,0:30.0,1:0.0,1:30.0 ......)。因此,在10分钟内,延迟增加约10秒钟。

0 个答案:

没有答案