IPyNB:Print()和日志记录模块的顺序不正确

时间:2020-09-14 12:56:50

标签: python-3.x logging jupyter-notebook ipython stdout

我在Jupyter Notebook上使用Python 3.7,并且我的代码在各个位置都有一些print()和logging.info()调用。在Jupyter Notebook中运行代码时,语句以错误的顺序显示,从而使调试变得相当困难。

示例代码:

import logging
from importlib import reload
reload(logging)  # https://stackoverflow.com/a/21475297
logging.basicConfig(level=logging.DEBUG)

print('AAA')
logging.info('111')
print('BBB')
logging.info('222')

通过标准python运行时正确的输出:

AAA
INFO:root:111
BBB
INFO:root:222

在Jupyter笔记本中运行时输出错误:

INFO:root:111
INFO:root:222
AAA
BBB

我认为这与刷新标准输出缓冲区有关,但是我不知道Jupyter如何处理这些事情。使用print('xxx',flush = True)的结果相反:

AAA
BBB
INFO:root:111
INFO:root:222

如何确定打印顺序正确?

谢谢!

0 个答案:

没有答案