在 Jupyter Notebook 中重新定义 Python 3 打印函数



我正在尝试重新定义 Python3 中的内置打印函数,以默认将 flush 关键字参数设置为 True。类似于以下内容(这实际上不起作用):

def print(message):
print(message, flush=True)

或者,是否有另一种方法可以将 flush 关键字默认设置为 True?任何帮助将不胜感激。


背景信息:

我想这样做的原因是因为它解决了我遇到的另一个问题。 我在Jupyther Notebook中使用Python3时遇到了打印功能问题。 当我同时使用 print() 和 input() 时,执行顺序会任意更改:有时打印输出出现在输入提示之前,有时顺序相反。以下代码在多次运行时生成两个不同的输出。

print("1")
x = input("2")
print("3")

由于我的声誉分数不允许我在此问题中包含图像,因此以下是指向两个结果的链接: 输出版本 1, 输出版本 2。 这似乎是与打印函数的标准输出缓冲相关的已知问题,解决方案是使用 print() 并将 flush 关键字参数设置为 True:print("somestring",flush=True)。这将立即运行打印输出而不缓冲,从而保留输出的预期顺序。

另一种可能有效的解决方案是在启动脚本之前在环境中使用python -u或设置PYTHONUNBUFFERED

python -u <script name>

。或。。。

PYTHONUNBUFFERED=1 python <script name>

参考: https://docs.python.org/3/using/cmdline.html#cmdoption-u

相关内容

  • 没有找到相关文章

最新更新