我无法弄清楚如何做到这一点。
我正在尝试运行python脚本一段时间。每持续1/10的时间我需要它来运行一些东西。问题是此步骤可能需要任何时间才能完成。我不能超过开始时设置的最大持续时间。
实施例: 持续时间20小时
间隔= 20/10 = 2小时(如果需要,可以改变)
每两个小时运行一次function()。 function()需要0到60分钟才能完成。然后就睡了我怎样才能让它继续运行9次,但不会超过最长持续时间?
答案 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)
分叉子进程来完成实际的工作;如果它超过你的运行时限制就杀了它。