Python プログラムでスレッドを使用していますが、最近、float が正しく解釈されず、pdb またはログ ステートメントで出力しようとすると、ほとんどの場合正しく表示されるという問題が見つかりました。
奇妙なことに、先ほど実行した 2 つのスレッドに表示されるには、異なる量のプリントが必要です。また、最初の 2 つの出力は同じ形式を使用しますが、値はスレッド 1 で変更されます。
for x in imports:
if float(x.prob) == 0.0:
logging.debug(float(x.prob))
logging.debug(float(x.prob))
logging.debug(x.prob)
logging.debug(str(x.prob))
logging.debug(str(float(x.prob)))
import pdb; pdb.set_trace()
[DEBUG] (Thread-1 ) 0.0
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-2 ) 0.0
[DEBUG] (Thread-2 ) 0.0
[DEBUG] (Thread-2 ) 0
[DEBUG] (Thread-2 ) 0.0592
[DEBUG] (Thread-2 ) 0.0592
と
(Pdb) float(x.prob) == 0.0
False
原因は何ですか?初めて正しく解釈されるようにするにはどうすればよいですか?
この質問に似ています: https://stackoverflow.com/questions/2485338/pdb-show-different-variable-values-than-print-statements