Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent ipython from storing outputs in Out variable

I'm currently working with pandas and ipython. Since pandas dataframes are copied when you perform operations with it, my memory usage increases by 500 mb with every cell. I believe it's because the data gets stored in the Out variable, since this doesn't happen with the default python interpreter.

How do I disable the Out variable?

like image 727
parchment Avatar asked Jun 14 '16 10:06

parchment


1 Answers

The first option you have is to avoid producing output. If you don't really need to see the intermediate results just avoid them and put all the computations in a single cell.

If you need to actually display that data you can use InteractiveShell.cache_size option to set a maximum size for the cache. Setting this value to 0 disables caching.

To do so you have to create a file called ipython_config.py (or ipython_notebook_config.py) under your ~/.ipython/profile_default directory with the contents:

c = get_config()

c.InteractiveShell.cache_size = 0

After that you'll see:

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

In [2]: Out[1]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-2-d74cffe9cfe3> in <module>()
----> 1 Out[1]

KeyError: 1

You can also create different profiles for ipython using the command ipython profile create <name>. This will create a new profile under ~/.ipython/profile_<name> with a default configuration file. You can then launch ipython using the --profile <name> option to load that profile.

Alternatively you can use the %reset out magic to reset the output cache or use the %xdel magic to delete a specific object:

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

In [2]: 2
Out[2]: 2

In [3]: %reset out

Once deleted, variables cannot be recovered. Proceed (y/[n])? y
Flushing output cache (2 entries)

In [4]: Out[1]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-4-d74cffe9cfe3> in <module>()
----> 1 Out[1]

KeyError: 1

In [5]: 1
Out[5]: 1

In [6]: 2
Out[6]: 2

In [7]: v = Out[5]

In [8]: %xdel v    # requires a variable name, so you cannot write %xdel Out[5]

In [9]: Out[5]     # xdel removes the value of v from Out and other caches
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-9-573c4eba9654> in <module>()
----> 1 Out[5]

KeyError: 5
like image 178
Bakuriu Avatar answered Oct 21 '22 22:10

Bakuriu