Проблема времени Python - PullRequest
0 голосов
/ 13 июня 2011

Мне трудно понять, как это сделать.

Я пытаюсь запустить скрипт Python в течение заданного времени. И каждые 1/10 времени мне нужно что-то запустить. Проблема в том, что этот шаг может занять любое время. Я не могу превышать максимальную продолжительность, установленную в начале.

Пример: Продолжительность 20 часов

Интервал = 20/10 = 2 часа (это может измениться, если это необходимо)

Каждые два часа запускается функция (). Функция () занимает от 0 до 60 минут. И тогда это спит. Как сделать так, чтобы он продолжал работать еще 9 раз, но не превышал максимальную продолжительность?

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Возможно, вы можете использовать сигналы.Идея состоит в том, что вы устанавливаете обработчик сигнала для вызова при генерации 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 голосов
/ 14 июня 2011

Формируйте подпроцесс для выполнения реальной работы; убить задание, если оно превысит ваш лимит времени выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...