完全禁用IPython输出缓存

时间:2013-12-28 13:04:27

标签: caching output ipython history

我在IPython中处理一些GB大小的numpy数组。当我删除它们时,我肯定希望它们消失,以便恢复内存。 IPythons输出缓存在那里非常烦人,因为即使在删除最后一个主动引用它们之后它仍保持对象存活。我已经设置了

c.TerminalInteractiveShell.cache_size = 0

在IPython配置中

,但这仅禁用对_oh的条目缓存,仍然会创建其他变量,如___等。我也知道%xdel,但无论如何,我宁愿完全禁用它,因为我很少使用输出历史记录,因此普通的del会立即再次运行。

4 个答案:

答案 0 :(得分:6)

查看IPython/core/displayhook.py第209-214行我会说它不可配置。您可以尝试制作PR以添加一个选项以完全禁用它。

答案 1 :(得分:6)

输入

echo "__builtin__._ = True" > ~/.config/ipython/profile_default/startup/00-disable-history.py

你的历史应该消失了。

修改

看起来配置目录的路径有时会有所不同,~/.config/ipython~/.ipython/。所以只需检查你得到的那个并相应地调整路径。该解决方案仍适用于jupyter console

答案 2 :(得分:2)

似乎我们可以通过添加“;”来抑制输出缓存现在就行了。

请参阅http://ipython.org/ipython-doc/stable/interactive/tips.html#suppress-output

答案 3 :(得分:0)

创建一个ipython配置文件:

!ipython profile create

输出可能是(对于ipython v4.0):

[ProfileCreate] Generating default config file: '/root/.ipython/profile_default/ipython_config.py'
[ProfileCreate] Generating default config file: '/root/.ipython/profile_default/ipython_kernel_config.py'

然后通过以下方式将行'c.InteractiveShell.cache_size = 0'添加到ipython_kernel_config.py文件中

!echo 'c.InteractiveShell.cache_size = 0' >> /root/.ipython/profile_default/ipython_kernel_config.py

加载另一个ipython内核,并检查其是否有效

In [1]: 123
Out[1]: 123

In [2]: _1
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-51-21553803e553> in <module>()
----> 1 _1

NameError: name '_1' is not defined

In [3]: len(Out)
Out[3]: 0