python logging.debug() 中长列表的性能损失

Qi *_*hen 3 python logging

Python 中的评估有多懒惰?如果我的代码看起来像

logging.debug('My very long list: %s' % list(x for x in long_generator))

并且日志记录有效级别使得调试消息被忽略,我是否会因使用此行而导致性能损失?

Del*_*gan 5

这不会被懒惰地评估,但是 Python logging 有一个解决这个问题的方法:isEnabledFor().

if logger.isEnabledFor(logging.DEBUG):
    logger.debug('My very long list: %s' % list(x for x in long_generator))
Run Code Online (Sandbox Code Playgroud)

您的列表将建成并格式化只有当日志级别高于DEBUG