我只是偶然在試圖證明同時使用print
和控制檯記錄控制檯上的消息時,以下令人驚訝的行爲:控制檯記錄器爲什麼不與打印同步?
import logging
for i in range(1, 10):
print("Hello")
logging.warning("Hello world")
# Possible result:
Hello
WARNING:root:Hello world
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
# Expected result:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
WARNING:root:Hello world
這怎麼可能?
不應該保證記錄器在返回之前在其輸出流(不管它是文件還是控制檯)上寫入數據嗎?
日誌記錄包括'線程'和work side sideloop。 爲可能的輸出啓動兩個線程(主循環+日誌記錄)。 – dsgdfg
你知道這是記錄在哪裏嗎? –
我也在尋找這種行爲。所以我添加了一個kludge,讓每次調用print()刷新stdout,這似乎讓事情變得更好。但是在日誌調用之後執行'print()'輸出後,仍然有很多次輸出日誌。我無法相信,在Python中配置記錄器以便與print()同步沒有比較方法。 –