1

更新如下:

我有一个脚本,它有一个我制作的函数,它可以根据几个因素计算将脚本设置为休眠的时间,这意味着脚本可能不需要再次运行半小时,也可能需要几天时间。

现在,我曾认为 time.sleep(seconds) 会将程序设置为睡眠状态,然后将其唤醒并再次运行。

time.sleep(3600)
runScriptAgain()

显然,这并没有像我想象的那样。当然,大多数事情似乎从来没有像我想的那样,学习的乐趣!

无论如何,一旦我发现脚本永远不会恢复,我就四处寻找其他方法来做到这一点。有人提到过os.exec,但根据我的(非常有限的)知识,它看起来像是用来从脚本中运行其他东西。然后我尝试了该threading.Timer功能,但这似乎也没有达到我想要的效果。或者我不知道我在做什么,这更有可能。然后我看到人们提到线程和守护进程以及我根本不知道的事情。

我在想也许是一个 for 循环,但这似乎很业余(锅遇到水壶!),我不确定它甚至会如何工作(如果有的话)。

timeToSleep = SleepValue()
count = 0 
while count < timeToSleep:
    count + 1
    time.sleep(1)
runscript()

那么有没有一种简单的方法可以将脚本设置为停止运行一段特定的时间,再次运行,然后休眠直到下一次?我认为必须有一个非常简单的方法来做到这一点,但我真的不知道。我在使用 Python 3.2.3 的 Windows 7 上,而且我现在才学习 python 几个月,所以任何复杂的东西都可能超出我的技能水平。

更新:

def something():
    print('Hello!')

def sleep():
    time.sleep(5)
    runscript()

def runscript():
    something()
    sleep()

runscript()

好的,这就是我的代码当前设置的方式。我用这个简单的代码试过了,问题似乎是它永远不会醒来?我不确定发生了什么。我以为它会调用第一个函数,打印项目,然后休眠 5 秒,然后重复 ad naseum。也许有人可以解释我应该怎么做。

谢谢!

4

2 回答 2

1

你可能想看看 python 的sched模块,或者可能是Advanced Python Scheduler之类的东西。无论哪种方式,如果您想从脚本中运行调度,您必须将其设置为长时间运行的进程或服务。Ignacio Vazquez-Abrams 的想法是最简单的 - 只需使用操作系统的调度程序(Windows 的任务调度程序或 Linux 上的 cron)每 x 分钟运行一次。让您的脚本最初读取配置文件以确定它是否应该完成执行或退出。如果您需要在下次运行时更新或更改,只需更新配置文件即可。

于 2012-07-17T03:35:32.903 回答
0

我像这样设置了一个脚本, time.sleep( 3600 ) 对我有用。将运行代码放在 while 循环中,然后让它运行。无需与某个值进行比较。

KEEP_GOING = should_we_keep_going( )

while KEEP_GOING:
     Time.sleep( 100 )
     Runscript( )
KEEP_GOING = should_we_keep_going( )

我还要说设置计划任务的想法是一个绝妙的想法。

于 2012-07-17T03:28:26.670 回答