如何删除在某个单元格编号后定义/创建的jupyter中的所有变量?
我的具体用例是我将在前几个单元格中加载一些变量,并且我想保留这些变量,而我将在笔记本上进行实验。
我不想继续重启或重置笔记本,因为加载这些变量需要时间。相反,我想从某个单元格“重新启动”。
答案 0 :(得分:1)
如果您能够负担内存并复制变量,请使用copy.copy()
或copy.deepcopy()
之类的内容存储“备份”变量并创建一个单元格,然后从备份中将原始值重新分配给变量。 / p>
您将运行此单元格以恢复您的值。
请参阅下面的修改详情
例如:
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
的选项,但如果某些变量需要时间加载,我不确定其性能。