Python time.sleep () работает с исключением с плавающей запятой

Я использую функцию Python time.sleep () в программе GNURadio. Однако, несмотря на то, что я предоставил аргумент с плавающей запятой, в коде возникло неожиданное исключение с плавающей запятой. Пожалуйста, найдите соответствующий фрагмент кода ниже (пожалуйста, не обращайте внимания на отладочные «Хе-хе» :-)):

while not ack and timeout < 5: #FIXME: Hard-coded timeout interval
    print "Hehe5"   
    timeout+=1
    print "Hehe6"
    time.sleep(0.5)
    print "Hehe7"
    with lock:
        ack=recvd_prev_ack
    print "Hehe8"

Это дает следующий результат:

Sent pktno=   0
Hehe
Hehe1
Hehe2
Hehe3
Hehe4
Hehe5
Hehe6
Floating point exception

Таким образом, причиной ошибки на самом деле является time.sleep (). Может кто-нибудь объяснить, что здесь может происходить? Моя версия Python - 2.7.1.

С уважением и уважением, Друбо


person dhruboroy29    schedule 01.06.2012    source источник
comment
Интересно ... думаю, вы можете опубликовать фактическую ошибку с консоли. Я надеюсь, что в нем есть еще какие-то подробности, которые были бы полезны   -  person inspectorG4dget    schedule 02.06.2012
comment
Ваш отступ неправильный. Пожалуйста, исправьте.   -  person Joel Cornett    schedule 02.06.2012


Ответы (1)


Здесь происходит то, что ваша программа многопоточна, а исключение с плавающей запятой происходит в другом потоке (а не там, где вы думаете).

person Gerrat    schedule 01.06.2012
comment
Спасибо за ответ. Я обнаружил источник ошибки. Это действительно произошло из-за второго запущенного потока. :-) - person dhruboroy29; 02.06.2012
comment
Я думаю, вы не получите трассировку, так как ошибка не возникает в вашем основном потоке. Возможно, посмотрите здесь, как получить трассировку этого другого потока: stackoverflow.com/questions/875453/ - person Gerrat; 02.06.2012