Запустите программу Python до определенного времени - PullRequest
1 голос
/ 21 марта 2019

Я хочу запустить свою программу в блокноте jupyter, и эта программа останавливается в определенное время (например, 18:00). Я написал программу с помощью цикла while и инкрементного индекса, но лучше написать его с параметром времени.

Я запускаю указанную программу каждый день по 7 часов. Он должен работать безостановочно.

    while(i<500000):
         execute algorithm
         i+=1

Но я бы хотел запустить мою программу, как показано ниже:

    while(not 18:00 clock):
         execute algorithm

Ответы [ 7 ]

1 голос
/ 21 марта 2019

Вы можете создать дочерний процесс, который завершит родительский процесс и сам себя в определенное время:

import multiprocessing as mp
import time
import datetime
import sys
import signal
import os

def process(hr, minute):
    while True:
        d = datetime.datetime.now()
        if d.hour == hr and d.minute == minute:
            os.kill(os.getppid(), signal.SIGTERM)
            sys.exit()
        else:
            time.sleep(25)


p = mp.Process(target=process, args=(18, 0))
p.start()

# your program here ...
1 голос
/ 21 марта 2019

Использование:

import datetime
#create the alarm clock.
alarm = datetime.time(15, 8, 24) #Hour, minute and second you want.

Вкл. В то время как:

while alarm < datetime.datetime.now().time():
    do something

Вы также можете установить определенную дату, установив так:

datetime.datetime(2019, 3, 21, 22, 0, 0)  #Year, month, day, hour, minute and second you want.

Для получения дополнительной информациипроверьте документацию datetime .

1 голос
/ 21 марта 2019

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

import datetime

def proc(h, m):
    while True:
        currentHour = datetime.datetime.now().hour
        currentMinute = datetime.datetime.now().minute
        if currentHour == h and currentMinute == m:
            break
        # Do stuff...

# Function call.
proc(18,0)
1 голос
/ 21 марта 2019
import datetime

while datetime.datetime.now().hour < 18:
    do stuff...

или

if datetime.datetime.now().hour >= 18:
    return
1 голос
/ 21 марта 2019

импорт datetime

https://docs.python.org/3/library/datetime.html

Затем вы можете использовать различные функции (time или timedelta) для установки времени.

timeNow = datetime.datetime ()время печатиNow

0 голосов
/ 22 марта 2019

Предположим, вы хотите, чтобы ваш код запускался в 22:00 (22:00) каждый день. Если вы используете Linux, вы можете сделать что-то подобное для запуска задания от имени пользователя root

sudo crontab -e 
0 22 * * *  /path/to/directory/python my_code.py

ваш файл Python my_code.py может быть что-то вроде этого

# python code to search pattern in a string using regex
import re

str1 = 'this is {new} string with [special] words.'

r = re.search(r'\{(.*?)\}', str1)
if r:
    found =r.group()
else:
    "No match found"

print found
0 голосов
/ 21 марта 2019

Вы можете установить это как задание cron и запускать задание во время x и останавливаться во время x.

...