我在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