【问题标题】:Python Time ProblemPython时间问题
【发布时间】:2011-06-13 19:53:01
【问题描述】:

我不知道该怎么做。

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

示例: 时长 20 小时

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

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

【问题讨论】:

  • 为什么不简单地使用全局定时器呢?例如,从一开始就启动它,并在需要时简单地检查它的值。
  • 您可以查看signal.alarm 以使用信号。这样,在给定的时间间隔内生成 SIGALRM,您可以设置信号处理程序以调用 function。另请查看signal.setitimer

标签: python time


【解决方案1】:

也许你可以使用信号。这个想法是您设置一个信号处理程序以在生成 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()。

【讨论】:

    【解决方案2】:

    fork 一个子进程来完成实际的工作;如果作业超过您的运行时间限制,则终止作业。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2015-02-10
      • 2023-04-04
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多