【发布时间】:2012-08-14 09:00:54
【问题描述】:
我想做的是在某个时间执行一个脚本,并且在大多数情况下,当我在执行后的短时间内运行它时,它会起作用,比如大约 10 到 15 分钟。所以我会运行计时器脚本,并在 10 - 15 分钟后执行它的命令。
这是我正在使用的代码:
import time
import myscript
from sys import exit
while 1:
if time.strftime("%H") == "7" and time.strftime("%M") == "15":
myscript.main()
exit()
我想要的是让脚本每天早上执行。当我在当天晚些时候到达我的电脑时,我可以看到脚本卡在这个进程中。
我在两台机器上试过这个,一个 Ubuntu 12.04 64 位机器和一个安装了 cygwin 的 Windows XP 机器,它们都显示了同样的问题。当我离开电脑时,我只是锁定它们,而不是让它们处于待机状态。我尝试运行脚本并锁定它,然后短暂解锁它,但我可以看到这不是问题,因为脚本运行良好。
还要注意,当我使用我的计算机时,它似乎运行得很慢,而且这个脚本似乎占用了大量的 CPU 使用率,在 30 - 50% 的范围内。
我还缺少什么,或者这不是解决问题的理想方法?
【问题讨论】:
-
在 Unix 系统上,在给定时间运行脚本通常是通过 cron daemon 完成的,更一般地说,busy waiting 不是一个好主意:你至少应该在循环中插入一个延迟,
time.sleep(10). -
我最初在脚本执行后有一个睡眠,但我现在将它删除,看看我是否可以让脚本先运行,然后再添加这样的睡眠
myscript.main() \ time.sleep(60) -
如果你不在那里睡觉,脚本的运行方式会有很大的不同
-
为什么不:计算到 7:15 之前还有多长时间,然后计算 time.sleep 这段时间? ...或者您是否尝试在 7:15 之前尽可能多地运行此代码?
-
如果您的机器在 7 点 15 分进入睡眠状态,稍后醒来,您希望发生什么?