2010-09-21 3 views
-2

suite à,Avez script run python à X: 00 heures

With python: intervals at x:00 repeat

En utilisant le filetage, Comment puis-je obtenir un script à exécuter à partir de 8h00 à l'arrêt en cours d'exécution 17h00

La solution doit être codé au sein de python et être portable

tia

+0

Est-ce que ce travail est fait? Si oui, ajoutez l'étiquette appropriée, s'il vous plaît. –

+0

Ce n'est pas à la maison, j'ai une solution qui fonctionne bien dans SQL --trigger, maintenant besoin de la solution python. – Merlin

Répondre

3

Le module time a une fonction appelée asctime, ce qui pourrait vous être utile:

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

Ainsi, vous pouvez incorporer quelque chose comme ce qui suit dans votre code:

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 

Démarrer ce script off une fois et laissez-le continuer à courir pour toujours.

Ceci est en réponse à la question de @ user428862 demandant si cela peut être exécuté avec "heure> 8 et heure < 17". Voici comment le code devrait être adapté à cette fin:

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 

, il se produit juste aussi pour moi que je suis imploying division des cordes et qui renvoie les chaînes, donc hour devrait être int(timestamp.split(separator)[0]) et ainsi de suite

+0

Ceci est aussi portable que possible, étant donné que cron n'est pas une option pour l'OP. – Sean

+0

même type de logique dans VBA et Sql, thx. à quelle fréquence le script fonctionne-t-il de haut en bas? Est-ce que "hour> 8 and hour <17:" fonctionnerait? aussi, comment pourrais-je modifier pour 8h30, si j'en ai besoin. – Merlin

+0

thnx, pour la mise à jour ... – Merlin

2

utilisation cron. Si sur Windows, utilisez windows task scheduler.

+0

solution non portable .... merci – Merlin

+3

comment est-ce que ce n'est pas portable? Cron fonctionne sur toutes les plateformes. – nosklo

0

dans le cron, et vous devez exécuter le script à partir de 8h00 arrêter de fonctionner à 17h00 utiliser commande crontab -e dans linux. et ajoutez ce code de ligne pour

* 8 * * * /YOUR/PATH/SCRIPT 

et vous arrêter dans 17 heures, dans cet exemple, nous allons tuer tous les processus de python à 17 heures

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

et vous pouvez vérifier crontab avec crontab - l et crontab -r pour réinitialisation à la valeur par défaut (aucune commande ne sera exécutée)

Questions connexes