Exécuter un script python pour une durée spécifiée par l'utilisateur?
Désolé, c'est probablement une question terrible. J'ai JUSTE commencé à apprendre le python, aujourd'hui. J'ai été lire un Octet de Python. Droit maintenant, j'ai un projet en Python qui implique le temps. Je ne peux pas trouver quoi que ce soit concernant à la fois dans l'Octet de Python, donc je vais vous demander:
Comment puis-je exécuter un bloc pour un utilisateur spécifié quantité de temps et puis se briser?
Par exemple (dans certains pseudo-code):
time = int(raw_input('Enter the amount of seconds you want to run this: '))
while there is still time left:
#run this block
ou encore mieux:
import sys
time = sys.argv[1]
while there is still time left:
#run this block
Merci pour toute aide. Aussi, d'autres guides en ligne et des tutoriels serait très apprécié. J'aime vraiment Octet de Python. Dive into Python n'arrive pas à retenir mon attention, cependant. Je suppose que je dois le sucer et essayer plus difficile à lire qu'un.
source d'informationauteur Rob
Vous devez vous connecter pour publier un commentaire.
Je vous recommande de fraie un autre filfaisant d'elle une fil de démonpuis dormir jusqu'à ce que vous souhaitez que la tâche de mourir. Par exemple:
L'interpréteur Python s'arrête lorsque toutes les non-fils de démon ont cessé d'exister. Ainsi, lorsque votre thread principal des sorties, si la seule autre thread en cours d'exécution est votre tâche que vous êtes en cours d'exécution dans un autre fil de démon, alors Python juste à la sortie. C'est un moyen pratique d'exécuter quelque chose dans le fond, si vous voulez être en mesure de tout simplement arrêter sans se soucier manuellement l'amenant à quitter et d'attente pour les arrêter.
Donc, en d'autres termes, l'avantage de cette approche est de plus en utilisant
sleep
dans une boucle for, dans ce cas, vous avez le code de votre tâche d'une façon telle qu'elle est cassée en petits morceaux discrets, puis vérifier à chaque tellement souvent que votre temps est écoulé. Ce qui pourrait être bon pour vos besoins, mais il peut y avoir des problèmes, comme si chaque morceau prend une quantité considérable de temps, donc à l'origine de votre programme à exécuter pour beaucoup plus longtemps que l'utilisateur a entré, etc. Si c'est un problème pour vous, dépend de la tâche que vous écrivez, mais j'ai pensé que je voudrais mentionner cette approche dans le cas où il serait mieux pour vous.Essayer
time.time()
qui renvoie l'heure actuelle comme le nombre de secondes depuis un temps appelé le époque (minuit sur Janv. 1, 1970, pour de nombreux ordinateurs). Voici une façon de l'utiliser:Donc, nous allons boucler tant que le temps depuis que nous avons commencé est inférieur au maximum spécifié par l'utilisateur. Ce n'est pas parfait: plus particulièrement, si
do_stuff()
prend beaucoup de temps, nous ne nous arrêterons pas jusqu'à ce qu'il termine et nous découvrons que nous sommes au-delà de la date limite. Si vous avez besoin d'être en mesure d'interrompre une tâche en cours dès que le temps s'écoule, le problème devient plus compliqué.Si vous êtes sur Linux, et que vous voulez interrompre un long processus en cours d'exécution, utilisez signal: