Python时间问题

时间:2011-06-13 19:53:01

标签: python time

我无法弄清楚如何做到这一点。

我正在尝试运行python脚本一段时间。每持续1/10的时间我需要它来运行一些东西。问题是此步骤可能需要任何时间才能完成。我不能超过开始时设置的最大持续时间。

实施例: 持续时间20小时

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

每两个小时运行一次function()。 function()需要0到60分钟才能完成。然后就睡了我怎样才能让它继续运行9次,但不会超过最长持续时间?

2 个答案:

答案 0 :(得分: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()。

答案 1 :(得分:0)

分叉子进程来完成实际的工作;如果它超过你的运行时限制就杀了它。