Запустить скрипт python в X: 00 утра

Продолжая,

С python: интервалы с повторением x: 00

Используя потоки, как я могу заставить скрипт запускаться с 8:00 утра, перестать запускать в 17:00

Решение должно быть написано на Python и быть переносимым.

тиА


person Merlin    schedule 21.09.2010    source источник
comment
Это домашнее задание? Если да, то добавьте, пожалуйста, соответствующий тег.   -  person Bryan Oakley    schedule 21.09.2010
comment
Это не домашнее задание, у меня есть решение, которое отлично работает в SQL --trigger, теперь нужно решение на Python.   -  person Merlin    schedule 22.09.2010


Ответы (2)


В модуле time есть функция asctime, которая может быть вам полезна:

>>> from time import asctime
>>> asctime()
'Tue Sep 21 17:49:42 2010'

Итак, вы можете включить в свой код что-то вроде следующего:

sysTime = asctime()
timestamp = systime.split()[3]
separator = timestamp[2]
hour = timestamp.split(separator)[0]
while hour < 8:
    # just wait
    sysTime = asctime()
    timestamp = systime.split()[3]
    separator = timestamp[2]
    hour = timestamp.split(separator)[0]

# now, it's just become 8:00 AM
while hour < 17: # until 5:00 PM
    sysTime = asctime()
    timestamp = systime.split()[3]
    separator = timestamp[2]
    hour = timestamp.split(separator)[0]

    # start your thread to do whatever needs to be done

Запустите этот сценарий один раз и позвольте ему работать вечно.

Это ответ на вопрос @ user428862, который спрашивает, можно ли это запустить с «часом> 8 и часом‹ 17 ». Вот как нужно адаптировать код для этой цели:

while 1:
    sysTime = asctime()
    timestamp = systime.split()[3]
    separator = timestamp[2]
    hour = timestamp.split(separator)[0]
    minute = timestamp.split(separator)[1]

    if (hour > 8) and (hour<17 and minute<1):
        # start your thread to do whatever needs to be done

Кроме того, мне просто пришло в голову, что я использовал разделение строк, и это возвращает строки, поэтому hour должно быть int(timestamp.split(separator)[0]) и так далее.

person inspectorG4dget    schedule 21.09.2010
comment
Это настолько портативно, насколько это возможно, учитывая, что cron не подходит для OP. - person Sean; 22.09.2010
comment
такая же логика в VBA и Sql, спасибо. как часто сценарий запускается сверху вниз. Будет ли работать час ›8 и час‹ 17? также, как бы мне изменить на 8:30, если мне это нужно. - person Merlin; 22.09.2010
comment
с (час ‹17 и минута‹ 1), я могу выяснить ... 8:30 или 7:59 еще раз спасибо ...... - person Merlin; 22.09.2010

в cron, и вам нужно запустить скрипт, начиная с 8:00, прекратить работу в 17:00, используйте команду crontab -e в Linux. и добавьте этот код строки для

* 8 * * * /YOUR/PATH/SCRIPT

и вы остановите его в 17:00, в этом примере мы убьем весь процесс python в 17:00.

* 17 * * * killall -9 /usr/bin/python

и вы можете проверить crontab с помощью crontab -l и crontab -r для сброса до значения по умолчанию (никакие команды не будут выполнены)

person Yuda Prawira    schedule 22.09.2010