1
votes

Exécuter le programme Python jusqu'à un moment précis

Je veux exécuter mon programme dans jupyter notebook et ce programme s'arrête à une heure précise (par exemple 18h00). J'ai écrit un programme avec une boucle while et un index incrémental, mais il est préférable de l'écrire avec le paramètre time.

Je lance le programme mentionné pendant 7 heures chaque jour. Il doit fonctionner sans arrêt.

    while(not 18:00 clock):
         execute algorithm

Mais j'aimerais exécuter mon programme comme ci-dessous:

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


1 commentaires

Bonjour et bienvenue, Pouvez-vous ajouter plus de détails techniques à votre question pour aider à reproduire le problème


7 Réponses :


0
votes

importer la date / heure

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

Vous pouvez ensuite utiliser les différentes fonctions (heure ou chronomètre) pour régler une heure.

timeNow = datetime.datetime () print timeNow


0 commentaires

0
votes

Vous pouvez configurer cela comme une tâche cron et démarrer la tâche à l'heure x et l'arrêter à l'heure x.


0 commentaires

1
votes
if datetime.datetime.now().hour >= 18:
    return

0 commentaires

1
votes

Vous pouvez créer une fonction prenant des heures et des minutes comme paramètres et effectuer une vérification dans la boucle 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)


0 commentaires

2
votes

Use:

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

Allumé pendant:

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

Vous pouvez également définir une date spécifique, en définissant comme ceci:

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

Pour plus d'informations, consultez la documentation de datetime .


1 commentaires

J'ai utilisé celui-ci. C'était utile! Merci



3
votes

Vous pouvez créer un processus enfant qui mettra fin au processus parent et lui-même à un certain moment:

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 ...


0 commentaires

0
votes

Supposons que vous souhaitiez que votre code s'exécute à 22 h 00 (22 h 00) tous les jours. Si vous utilisez Linux, vous pouvez faire quelque chose comme ceci pour exécuter la tâche en tant qu'utilisateur root

# 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

votre fichier python my_code.py pourrait être quelque chose comme ça p >

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


0 commentaires