1

GNURadioプログラムでPythonのtime.sleep()関数を使用しています。ただし、浮動小数点引数を指定したにもかかわらず、コードで予期しない浮動小数点例外が発生します。以下の関連するコードスニペットを見つけてください(デバッグ「Hehe」の:-)を無視してください):

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です。

よろしく、Dhrubo

4

1 に答える 1

3

ここで起こっているのは、プログラムがスレッド化されており、浮動小数点例外が別のスレッドで発生していることです(あなたが思っている場所ではありません)。

于 2012-06-01T22:48:03.837 に答える