我在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
如何确定打印顺序正确?
谢谢!