我在python程序中使用线程,最近发现一个问题,其中的float没有被正确解释,并且每当我打印出pdb或日志语句时,它大部分时间显示正确。Python变量在pdb和打印语句中的评估方式不同
奇怪的是,在刚刚运行的这两个线程中显示的打印量不同。另外,前两个打印使用相同的格式,但该值仍处于线程更改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
需要一个完整的,可运行的程序来演示这个问题,如果没有完整的图片来调试线程化的奇怪程序是非常困难的。我们甚至不知道“进口”是什么或来自哪里。 – 2011-04-13 05:11:37