清除执行完成后Jupiter单元格中定义的所有变量

时间:2018-05-03 13:15:56

标签: python jupyter

我需要在jupyter中导入和操作内存繁重的数据。 因为我倾向于拥有相当长的笔记本,所以几个数据集将成为导入器,我需要手动连续清除它们。 这很潮流。

如果可能的话,我希望有一个工具可以清除单元格中引入的所有变量,只有那些不需要在满足目的后手工处理它们的工具。

我当然可以覆盖变量,但是因为它们都用于相当不同的目的,所以这将极大地降低代码的可读性。

总结:

  • 单元格1:

    变量开销#this将在整个笔记本中使用

  • 单元格2:

    导入或生成数据&操纵数据

    清除单元格中引入的所有变量,无需寻址 他们手中的每一个< - 这就是我要找的东西。

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以通过在代码中添加以下magic command来重置Jupyter笔记本中的变量:

%reset_selective -f [var1, var2, var3]

如果在代码中添加这些行,它应该仍然可读。

完全回答你的问题 - 目前我不认为存在一个命令可以自动查找在特定单元格中创建的所有变量并仅重置它们。 (如果我错了,请有人纠正我。)

但是您可以使用以下代码删除在单元格中新创建的那些命名空间对象。这可能是你想要的:

from IPython import get_ipython

my_variables = set(dir())  # Write this line at the beginning of cell

# Here is the content of the cell

my_variables = list(set(dir()) - my_variables)  # Write these 2 lines at the end of cell
get_ipython().magic('%reset_selective -f [{}]'.format(','.join(my_variables)))

答案 1 :(得分:0)

这不是一个干净的解决方案,但我需要保留的数据单元在计算上并不昂贵。 因此,我发现这样做最方便:

%reset -f
exec In[n:m]

我希望有人觉得这很有帮助。 无论如何,我希望找到一个更清洁的方法解决这个问题!