jupyter删除单元格后的所有变量

时间:2017-08-28 21:48:52

标签: python jupyter-notebook jupyter

如何删除在某个单元格编号后定义/创建的jupyter中的所有变量?

我的具体用例是我将在前几个单元格中加载一些变量,并且我想保留这些变量,而我将在笔记本上进行实验。

我不想继续重启或重置笔记本,因为加载这些变量需要时间。相反,我想从某个单元格“重新启动”。

1 个答案:

答案 0 :(得分:1)

如果您能够负担内存并复制变量,请使用copy.copy()copy.deepcopy()之类的内容存储“备份”变量并创建一个单元格,然后从备份中将原始值重新分配给变量。 / p>

您将运行此单元格以恢复您的值。

请参阅下面的修改详情

例如:

  1. 存储原始值
  2. from copy import deepcopy
    
    bckp_a = deepcopy(var_a)
    bckp_b = deepcopy(var_b)
    
    dir_bckp = deepcopy(dir())  # store defined variables defined at this point
    
    1. 你有什么东西
    2. var_a = some_func(var_a)
      var_b = some_other_func(var_a)
      var_c = some_value
      
      1. 恢复保留变量的原始值
      2. var_a = deepcopy(bckp_a)
        var_b = deepcopy(bckp_b)
        
        1. 删除新创建的变量
        2. for var in dir():
              if var == 'dir_bckp':      # Note that it is a string
                  continue                   # Preserve dir_bckp, very important.
              elif var not in dir_bckp:
                  del globals()[var]     # Delete newly defined variables
          
          >>> var_c
          NameError: name 'var_c' is not defined
          

          修改

          如果您绝对需要删除创建的变量,可以尝试使用dir()globals()。但这可能不是好习惯,所以要小心。

          请参阅上述更改。

          请注意,还有creating a restore point使用Pickle的选项,但如果某些变量需要时间加载,我不确定其性能。