gpt4 book ai didi

python - 为什么控制台记录器与打印不同步?

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:29 24 4
gpt4 key购买 nike

当我尝试使用 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

这怎么可能?

难道不应该保证记录器在返回之前写入其输出流(无论是文件还是控制台)?

最佳答案

这些是您的问题提出的几个不同的问题。首先声明

logging.Formatter('{asctime} {name} {levelname:8s} {message}', style='{')

没有效果,因为您正在实例化一个 Formatter 然后丢弃结果。您需要将格式化程序分配给一个 Handler,它被添加到一个 Logger。所有这些都记录在 Python stdlib documentation 中.

其次,您的示例中有两个不同输出流 - print 写入 sys.stdoutlogging.warning,没有其他配置,写入 sys.stderr。这些流如何多路复用到单个控制台上并没有明确定义,这取决于 I/O 缓冲的设置方式、您的操作系统和其他因素。

关于python - 为什么控制台记录器与打印不同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com