我只是偶然在试图证明同时使用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()同步没有比较方法。 –