2009-07-23 10 views
1

Je suis sûr qu'il y a une meilleure façon de le faire, mais je suis tout à fait le débutant, donc je l'ai fait la seule façon de le comprendre. La chose est, j'ai un script qui met à jour un fichier texte avec les messages les plus récents d'un flux RSS (j'ai obtenu de l'aide de vous les gars pour le comprendre). Mais je veux que ce script soit automatisé, donc j'ai fait ceci:Puis-je endommager le système en exécutant time.sleep() avec ce code débutant en Python?

import time 
import os 

seconds = 3600 
kjor = 'python vg.py' 

time.sleep(seconds) 
os.system(kjor) 

time.sleep(seconds) 
os.system(kjor) 

time.sleep(seconds) 
os.system(kjor) 

J'ai continué à copier ces 24x vers le bas. Je sais que cela peut être fait beaucoup mieux avec une boucle (mais?), Mais j'ai peur de ne pas avoir beaucoup de connaissances dans ce domaine (pour l'instant).

Ma question, cependant, est la suivante: Le système peut-il être endommagé de quelque façon que ce soit si je le laisse fonctionner pendant une période plus longue?

+3

"système être endommagé de quelque façon"? Qu'est-ce que ça veut dire? Brûler? Exploser? Transformer en Decepticon et prendre le contrôle de la planète? Que signifie "endommagé"? –

+0

Surcharge et se faire assommer. – bleakgadfly

+0

En cas de surcharge du système, il suffit peut-être de désactiver os.system (kjor). – sunqiang

Répondre

9

Pour répondre à votre question, non, cela ne nuira à rien. Pendant que les time.sleeps sont en veille, le programme prendra très peu de puissance de traitement et le reste du système pourra fonctionner normalement.

Maintenant, en ce qui concerne votre problème de bouclage. Si vous voulez que le code exécuté pour toujours (ou jusqu'à ce que vous arrêtez le programme) le code que vous voulez est

while True: 
    os.system(kjor) 
    time.sleep(seconds) 

C'est, littéralement, et une boucle infinie, mais dans ce cas (est probablement) ce que vous voulez.

Si vous êtes attaché à avoir un nombre particulier d'itérations, alors vous pourriez faire quelque chose comme la réponse de sunqiang (répété ici)

for loop in xrange(240): 
    os.system(kjor) 
    time.sleep(seconds) 

Enfin, si vous êtes sur une plate-forme Unix (comme Linux ou Mac) vous devriez jeter un oeil à cron, car il est conçu pour mettre en place des programmes récurrents à exécuter et des périodes de temps particulières. Vous pouvez le configurer pour exécuter votre script toutes les minutes et il le fera heureusement jusqu'à la fin des temps (ou vous le supprimez, selon la première éventualité).

+0

Windows a une fonctionnalité similaire à cron (8), si c'est à quoi ressemblent vos citrons. Il existe un panneau de contrôle appelé "Planificateur de tâches" (que vous pouvez rechercher dans Explorer.exe). – SingleNegationElimination

1

Utilisez xrange s'il vous plaît, ne copiez pas votre code 24 fois.

for loop in xrange(240): 
    time.sleep(seconds) 
    os.system(kjor) 

Cela n'endommage pas votre système, pour autant que je sache.

1

Il n'endommage aucun système et il est également très courant. Créez simplement une boucle afin que votre application arrête doucement de fonctionner après un certain temps; Ou mieux encore, faites le vérifier pour une condition, peut-être écouter un port tcp en attente de quelqu'un pour lui demander de quitter (alors vous devrez créer une deuxième application pour envoyer ce message de quitter).

Questions connexes