我有一个jupyter笔记本,它创建了一个本Map像缓存。我想在运行一个特定的单元格之前清除该高速缓存。有人知道怎么做吗?我试过:
import gc gc.collect()
但没有效果。我也试过清除Chrome中的所有cookie和缓存,但那也确实起作用了。
ddarikpa1#
在Jupyter Notebook的新单元格中尝试以下操作:
%reset -f
上面的代码将清除所有不带User Confirmation的变量。如果你想要明确的用户确认,只需删除-f。
User Confirmation
-f
%reset_selective -f varName
以上将删除特定变量。如果您使用的Python版本高于3.3,您也可以尝试(* 我还没有使用过!*):
%store -d someVar # Remove particular variable and its value from storage %store -z # Remove all variables from storage
有关详细信息,请查看this doc。
dgjrabp22#
我意识到这不是一个很好的(近乎糟糕的)答案--简而言之,关闭并重新打开浏览器。今天我自己也在纠结这个问题,甚至清除浏览器缓存似乎也不起作用。我发现刷新图片的唯一方法是:1.保存您的笔记本1.暂停并关闭会话1.关闭浏览器1.当您重新打开笔记本-新的图像将出现...我甚至尝试删除引用的图像文件。但浏览器仍然保留它。
ivqmmu1c3#
这对我很有效,当一个旧的图片不会在Chrome上的Jupyter-Lab的一个降价单元格中刷新时:1.在标记代码中为图像路径指定错误路径1.执行该减价单元格,使其出错。1.正确重命名图像路径。1.瞧,它应该会刷新.
vuktfyat4#
Python在jupyter中是不一样的,我认为自动垃圾收集会在代码的某个点上工作,每一步都被暂停和缓存,这使得处理缓冲区非常占用内存。最简单的解决方案是在元素中添加析构函数,并在需要的步骤中删除对gc的需要。这个例子使用空缓冲区作为加载,如果你有足够的内存同时打开所有的示例,如果不分块处理它们,只使用del img_buffs就足够了。
del img_buffs
n_images = 1024 img_buffs = {}
for i in range(n_images): img_buffs[i] = (0,) * 150000
for i in range(n_images): del img_buffs[i]
pkwftd7m5#
我可以定义一个unset()函数/方法(类似于PHP),除了我可以将变量/对象/类名作为字符串传入,这个方法从Pyton的全局变量中删除目标字符串。我不确定这是否是一个糟糕的实践,但它可以删除我在Jupyter笔记本中定义的内容。
def unset(varname): """ Unsets a global variable from memory. Helpful when we are running code blocks in Jupyter multiple times. """ try: del globals()[varname] print('deleted ' + varname) except: print(varname + ' does not exist')
下面是一些包含类定义和示例的示例:
class MyTest: somevar = 1234 def __init__(self): print('MyTest') myT = MyTest() unset('MyTest')
这将输出:我的测试已删除MyTest您可以查看是否仍定义了示例:
print(myT)
是的,输出如下所示:〈0x107bd54d0处的main. MyTest对象〉然后可以取消设置示例对象:
unset('myT')
输出:缺失myT欢迎提出意见和建议!
k4ymrczo6#
最好和最简单的解决方案是首先卸载Jupyter笔记本电脑,然后重新安装它。
6条答案
按热度按时间ddarikpa1#
在Jupyter Notebook的新单元格中尝试以下操作:
上面的代码将清除所有不带
User Confirmation
的变量。如果你想要明确的用户确认,只需删除-f
。以上将删除特定变量。
如果您使用的Python版本高于3.3,您也可以尝试(* 我还没有使用过!*):
有关详细信息,请查看this doc。
dgjrabp22#
我意识到这不是一个很好的(近乎糟糕的)答案--简而言之,关闭并重新打开浏览器。
今天我自己也在纠结这个问题,甚至清除浏览器缓存似乎也不起作用。我发现刷新图片的唯一方法是:
1.保存您的笔记本
1.暂停并关闭会话
1.关闭浏览器
1.当您重新打开笔记本-新的图像将出现
...我甚至尝试删除引用的图像文件。但浏览器仍然保留它。
ivqmmu1c3#
这对我很有效,当一个旧的图片不会在Chrome上的Jupyter-Lab的一个降价单元格中刷新时:
1.在标记代码中为图像路径指定错误路径
1.执行该减价单元格,使其出错。
1.正确重命名图像路径。
1.瞧,它应该会刷新.
vuktfyat4#
Python在jupyter中是不一样的,我认为自动垃圾收集会在代码的某个点上工作,每一步都被暂停和缓存,这使得处理缓冲区非常占用内存。最简单的解决方案是在元素中添加析构函数,并在需要的步骤中删除对gc的需要。
这个例子使用空缓冲区作为加载,如果你有足够的内存同时打开所有的示例,如果不分块处理它们,只使用
del img_buffs
就足够了。pkwftd7m5#
我可以定义一个unset()函数/方法(类似于PHP),除了我可以将变量/对象/类名作为字符串传入,这个方法从Pyton的全局变量中删除目标字符串。
我不确定这是否是一个糟糕的实践,但它可以删除我在Jupyter笔记本中定义的内容。
下面是一些包含类定义和示例的示例:
这将输出:
我的测试
已删除MyTest
您可以查看是否仍定义了示例:
是的,输出如下所示:
〈0x107bd54d0处的main. MyTest对象〉
然后可以取消设置示例对象:
输出:
缺失myT
欢迎提出意见和建议!
k4ymrczo6#
最好和最简单的解决方案是首先卸载Jupyter笔记本电脑,然后重新安装它。