Y a-t-il une limite supérieure à la durée de vie de votre enfance avec le temps.sleep ()? J'ai eu des problèmes avec dormir mon script pendant de longues périodes (c'est-à-dire plus de 1k secondes). Ce problème est apparu sur les plates-formes Windows et UNIX. P>
6 Réponses :
Je suppose que plus le temps est longuement probable situation décrite dans les docs A>: p>
Le temps de suspension réel peut être inférieur à celui demandé, car tout signal capturé finira le
Sleep () code> après l'exécution de la routine capture de ce signal. En outre, le temps de suspension peut être plus long que demandé par une quantité arbitraire en raison de la planification d'une autre activité dans le système. P>
blockQuote>
La merveille de copie et de pâte ... (voir la réponse d'Eliben). Cependant, +1 pour inclure la source avec lien.
@Boldewyn: Seulement parce que mon firefox a été fragé, j'ai 3 secondes plus tard, puis Eli.
@Boldewyn: Nous fournissons toutefois différentes évaluations.
À côté de la durée d'attente probable, il semble également y avoir une limite difficile, diffère des versions.
Selon la documentation, Time.sleep accepte tout numéro non nul [1], comme vous le savez probablement. Cependant, vous êtes sous l'influence de votre planificateur de systèmes d'exploitation également [1]. P>
Désolé, je n'ai pas vu les autres réponses avant de poster.
Vous pouvez éviter les problèmes possibles en mettant le sommeil avec un délai bref dans la boucle:
def sleep(n): for i in xrange(n): time.sleep(1)
Ceci est un peu mieux, mais cela pourrait toujours dormir pour moins de n si les appels de sommeil () sont interrompus tôt.
Eh bien, dans ce cas, je change la fonction à: t0 = temps.time (); tandis que Time.time ()
D'autres ont expliqué pourquoi vous pourriez dormir moins que vous avez demandé, mais vous ne vous montrerez pas comment traiter cela. Si vous devez vous assurer de dormir au moins n secondes, vous pouvez utiliser le code comme: Ceci peut dormir plus que N, mais il ne reviendra jamais avant de dormir au moins n secondes. p> p>
+1 Pour ne pas avoir fabriqué la même erreur @mykhal, où l'effet cumulatif de dormir de petits incréments s'accumulera pour résulter d'un sommeil total sensiblement plus grand que souhaité.
réponse réelle, au moins pour ma machine: 4294967.2950000003911900999 ... Secondes.
sleep(4294967.2950000003911901)
Comment avez-vous obtenu ce numéro?
Tu es un mystère monsieur
@Matt intéressant!
Le seuil ressemble au même pour moi sur Windows 10.
Il est intéressant d'être intéressant que je teste sur Repl.it Python Compiler avec mon iPad, mais il semble que cela ait une limite plus grande que cela.
Testé sur Pycham, 4294968 code> en effet
Cela a changé dans la version 3.5 : P >
temps.sleep (* secs *): code> La fonction peut maintenant dormir au moins fort> secs em> même si le
le sommeil est interrompu par un signal, sauf si le gestionnaire de signal augmente
Une exception (voir PEP 475 pour la justification) P>
Oui, il y a une limite supérieure: lorsque quelqu'un se déclenche sur le câble d'alimentation de votre machine ;-)
Quel "problème" avez-vous? Être spécifique.
Je suppose que c'est que c'est spécifique de la plate-forme, mais je n'ai pas assez de connaissances pour prouver quoi que ce soit.