我在python程序中使用线程,最近发现一个问题,在这个问题中,float没有被正确解释,并且每当我打印出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