2017-08-28 26 views
0

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

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

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

回答

1

如果你能负担得起的存储和使用类似copy.copy()copy.deepcopy()复制变量,商店“备份”的变量并创建了您重新分配原始值从备份您的变量的单元格。

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

见下文

编辑详细信息说明:

  1. 商店原始值
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 
  • 你的东西
  • var_a = some_func(var_a) 
    var_b = some_other_func(var_a) 
    var_c = some_value 
    
  • 用于保存变量
  • var_a = deepcopy(bckp_a) 
    var_b = deepcopy(bckp_b) 
    
  • 删除新创建的变量
  • 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的选项,但是如果某些变量需要时间加载,我不确定性能。

    +0

    所以对于备份变量,我有兴趣知道如何可以帮助删除其他变量 – user113531

    +0

    一旦变量值恢复,重新运行和垃圾收集器将完成他的工作。如果你真的想删除这些变量,你可以备份'dir()'并将其恢复。但这是一个窍门,我怀疑这是好的做法。我会在编辑中解释。 – FabienP

    +0

    @ user113531:你在找什么? – FabienP

    相关问题