Есть ли верхний предел того, как долго вы можете указать поток для сна с time.sleep()? У меня были проблемы со спящим сценарием в течение длительных периодов времени (то есть более 1 секунды). Эта проблема появилась на платформах Windows и Unix.Верхний предел в Python time.sleep()?
ответ
Я полагаю, тем дольше время более вероятным situation described in the docs:
The actual suspension time may be less than that requested because any caught signal will terminate the
sleep()
following execution of that signal’s catching routine. Also, the suspension time may be longer than requested by an arbitrary amount because of the scheduling of other activity in the system.
Чудо копировать и вставлять ... (см. Ответ eliben). Однако +1 для включения источника со ссылкой. – Boldewyn
@Boldewyn: только потому, что мой firefox застыл, я был через 3 секунды позже eli. – SilentGhost
@Boldewyn: мы действительно предоставляем различные оценки. – SilentGhost
Спецификация говорит:
Suspend execution for the given number of seconds. The argument may be a floating point number to indicate a more precise sleep time. The actual suspension time may be less than that requested because any caught signal will terminate the sleep() following execution of that signal’s catching routine. Also, the suspension time may be longer than requested by an arbitrary amount because of the scheduling of other activity in the system.
Ничто срока здесь. Конечно, 1 тыс. Секунд не так много и должно работать без проблем.
Согласно документации, time.sleep принимает любое ненулевое число [1], как вы, наверное, знаете. Однако вы также находитесь под влиянием планировщика своих операционных систем [1].
Простите, не видели другие ответы перед публикацией. – zpon
вы можете предотвратить возможные проблемы, поставив сон с короткой задержкой в петлю:
def sleep(n):
for i in xrange(n):
time.sleep(1)
Другие объяснили, почему Вы могли бы спать меньше, чем вы просили, но не показал вам, как с этим бороться. Если вам нужно, чтобы убедиться, что вы спите, по крайней мере, п секунд вы можете использовать такой код:
from time import time, sleep
def trusty_sleep(n):
start = time()
while (time() - start < n):
sleep(n - (time() - start))
Это может спать больше, чем п, но он никогда не будет возвращаться перед сном, по крайней мере, п секунд.
+1 для того, чтобы не сделать ту же ошибку @mykhal, где кумулятивный эффект сна с небольшими приращениями будет нарастать, чтобы привести к значительно большему полному сну, чем хотелось бы , –
Фактический ответ, по крайней мере для моей машины: 4294967.2950000003911900999 ... секунд.
sleep(4294967.2950000003911901)
OverflowError: длина сна слишком большой
Как вы получили этот номер? – SherylHohman
- 1. Верхний предел памяти?
- 2. Верхний предел возврата строки?
- 3. Neo4j GC верхний предел
- 4. Верхний предел GC превышен
- 5. Верхний предел данных Smarty
- 6. Python time.sleep
- 7. Нижний предел <A <Верхний предел
- 8. Верхний предел функции fromstring в ElementTree
- 9. Pentaho | Верхний предел GC превышен
- 10. OutOfMemoryError: GC Верхний предел превышен
- 11. Определить верхний предел размера файла
- 12. Верхний предел git config pack.packSizeLimit?
- 13. Верхний предел postgresql вычисленного поля
- 14. javax.servlet.ServletException: превышен верхний предел GC
- 15. Geoserver - превышен верхний предел GC
- 16. java.lang.OutOfMemoryError (превышен верхний предел GC)
- 17. Верхний предел для кучи java
- 18. альтернатива python time.sleep()
- 19. Python: функции time.sleep неожиданно?
- 20. Python: высокая точность time.sleep
- 21. Python time.sleep script
- 22. Python time.sleep() vs event.wait()
- 23. Python time.sleep процесс блокировки
- 24. Python tkinter time.sleep()
- 25. Python Tkinter time.sleep()
- 26. Python time.sleep неопределенно
- 27. Python time.sleep() зависает
- 28. Ошибка синтаксиса Python time.sleep
- 29. Python time.sleep() зависает
- 30. Насколько точны python time.sleep()?
Да, есть верхний предел: Когда кто-то спотыкается кабель питания вашей машины ;-) – Boldewyn
Что «вопрос» вы с? Быть конкретной. –
Я предполагаю, что это определенная платформа, но у меня недостаточно знаний, чтобы пробовать что-либо. – Boldewyn