【发布时间】:2015-06-28 14:40:14
【问题描述】:
Ipython Notebook 似乎并没有实时打印结果,而是似乎以某种方式进行缓冲,然后批量输出打印结果。处理打印命令后,如何让 ipython 打印我的结果?
示例代码:
import time
def printer():
for i in range(100):
time.sleep(5)
print i
假设上面的代码在一个被导入的文件中。我怎么能做到,当我调用打印机函数时,它每 5 秒打印一个数字,而不是最后的所有数字?
请注意,我无法编辑函数printer(),因为我是从某个外部模块获取的。我希望以某种方式更改 ipython 笔记本的配置,使其不使用缓冲区。因此,我也不希望使用 sys.stdout.flush(),我想根据问题实时执行,我不希望任何缓冲区开始。
我还尝试使用以下命令加载 ipython 笔记本:
ipython notebook --cache-size=0
但这似乎也不起作用。
【问题讨论】:
-
谢谢。我的问题略有不同。我不想更改功能打印机(),因为我通过导入一个我不想更改的模块得到它。我只是想改变 ipython 的行为。因此,上述问题中提出的解决方案对我不起作用,因为我无法将 sys.stdout.flush() 添加到函数中。我想要的是 ipython 笔记本中没有缓冲区。它会自动输出所有内容。
-
你可以修改打印机功能。
-
可能,但应该有办法解除 ipython notebook stdout no 的缓冲?
-
添加需求可以找到some answers here
-
谢谢,但我真的找不到任何有用的东西。
标签: python buffer ipython-notebook