9
votes

Limite supérieure en python temps.sleep ()?

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.


3 commentaires

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.


6 Réponses :




1
votes

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)


2 commentaires

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 ()



10
votes

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: xxx

Ceci peut dormir plus que N, mais il ne reviendra jamais avant de dormir au moins n secondes.


1 commentaires

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



6
votes

réponse réelle, au moins pour ma machine: 4294967.2950000003911900999 ... Secondes.

sleep(4294967.2950000003911901)


6 commentaires

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 en effet



3
votes

Cela a changé dans la version 3.5 :

temps.sleep (* secs *): La fonction peut maintenant dormir au moins secs 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)


0 commentaires