问题 完全禁用IPython输出缓存


我在IPython中处理一些GB大小的numpy数组。当我删除它们时,我绝对希望它们消失,以便恢复内存。 IPythons输出缓存在那里非常烦人,因为它甚至在删除了最后一个后保持对象存活 积极的意图 参考他们。我已经开始了

c.TerminalInteractiveShell.cache_size = 0

在IPython配置中,但这只会禁用条目的缓存 _oh,其他变量如 ___ 等等仍在创建中。我也知道 %xdel,但无论如何,我宁愿完全禁用它,因为我很少使用输出历史,所以这是一个平原 del 会立刻再次工作。


11187
2017-12-28 13:04


起源

那些大型数组被分配到缓存(_ 只有你展示它们,不是吗?分配 x=largearray 和 largearray; 压制那个。 - hpaulj
是的,但是为了显示它们,我总是不得不使用print而不是只输入变量名。所以我仍然回到同样的问题,如何避免这种情况。 - Michael
通常,仅显示形状或大型阵列的切片(例如前10行或列)更有用,而不是整个事物。在旧的MATLAB上尤其如此,它在显示大型数组时没有使用省略号。 - hpaulj


答案:


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


6
2017-12-28 17:56



这实际上给了我正确的想法!仔细查看代码,它会检查 _ 存在 - 取决于版本 - __builtin__ 要么 IPython.core.py3compat.builtin_mod。所以之后 __builtin__._ = True,历史不见了!谢谢! - Michael
哦,我想你把它放在你的启动文件夹中然后,它是明确的:-) - Matt
@Michael你愿意把你的评论改成答案吗,也许还会添加一些关于你做了什么的细节?我想和你做同样的事情,但我宁愿不修补它并使用(和upvode)罐头解决方案。 - jb.
@jb我在下面添加了一个答案。 - Michael
答案不再适用于Jupyter。甚至c.TerminalInteractiveShell.cache_size = 0都没有工作。如何禁用Out和_? @马特 - Gioelelm


输入

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

你的历史应该消失了。

编辑:

似乎配置目录的路径有时也有点不同 ~/.config/ipython 要不就 ~/.ipython/。所以只需检查你得到的那个并相应地调整路径。解决方案仍然适用 jupyter console


6
2017-07-11 14:32



每次启动iPython时这是否会禁用历史记录? - joshlk
是的,它编辑了IPython配置。 - Michael


似乎我们可以通过放置“;”来抑制输出缓存现在结束了。

看到 http://ipython.org/ipython-doc/stable/interactive/tips.html#suppress-output


2
2018-03-25 02:41