2011-06-13 36 views
0

我无法弄清楚如何做到这一点。Python时间问题

我想在设定的时间内运行python脚本。并且,我每需要1/10的时间来运行一些东西。问题是这一步可能需要花费任何时间来完成。我无法超越一开始就设定的最长持续时间。

实施例: 持续时间20小时

间隔= 20/10 = 2小时(如果它需要这可以改变)

每隔两个小时运行功能()。函数()需要0-60分钟才能完成。然后它睡觉。我怎样才能使它继续运行9次,但不超过最大持续时间?

+1

为什么不简单地使用全局定时器?例如,在最初开始时只需在需要时检查它的值。 – 2011-06-13 19:56:31

+1

您可以查看'signal.alarm'来使用信号。这样SIGALRM就会在给定的时间间隔内生成,并且您可以设置您的信号处理程序来调用'function'。另外检查'signal.setitimer'。 – 2011-06-13 19:56:40

回答

2

也许你可以使用信号。这个想法是你设置一个信号处理程序来在SIGALRM生成时被调用。在信号处理程序中,您可以拨打function。然后,您重置闹钟并重新执行。这是给你一个想法的一个基本例子。

import signal 
... 
signal.signal(signal.SIGALRM, alarm_handler) # set the signal handler 
signal.alarm(interval)      # set the alarm 
... 
def alarm_handler(signum, stack): 
    # call function 
    function() 

一旦警报响起时,你叫function()然后重置报警:

signal.signal(signal.SIGALRM, alarm_handler) 
signal.alarm(interval) 

或者您可以使用signal.setitimer自动配置区间报警,但我不知道如何将工作大时间片(用于微型马戏)。

注意:必须从主线程调用signal.alarm()。

0

分叉一个子过程来完成实际的工作;如果作业超过了运行时间限制,则将其终止。