python 清除Jupyter Notebook中的缓存图像

xoefb8l8  于 2023-02-28  发布在  Python
关注(0)|答案(6)|浏览(469)

我有一个jupyter笔记本,它创建了一个本Map像缓存。我想在运行一个特定的单元格之前清除该高速缓存。有人知道怎么做吗?我试过:

import gc
gc.collect()

但没有效果。我也试过清除Chrome中的所有cookie和缓存,但那也确实起作用了。

ddarikpa

ddarikpa1#

在Jupyter Notebook的新单元格中尝试以下操作:

%reset -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

dgjrabp2

dgjrabp22#

我意识到这不是一个很好的(近乎糟糕的)答案--简而言之,关闭并重新打开浏览器
今天我自己也在纠结这个问题,甚至清除浏览器缓存似乎也不起作用。我发现刷新图片的唯一方法是:
1.保存您的笔记本
1.暂停并关闭会话
1.关闭浏览器
1.当您重新打开笔记本-新的图像将出现
...我甚至尝试删除引用的图像文件。但浏览器仍然保留它。

ivqmmu1c

ivqmmu1c3#

这对我很有效,当一个旧的图片不会在Chrome上的Jupyter-Lab的一个降价单元格中刷新时:
1.在标记代码中为图像路径指定错误路径
1.执行该减价单元格,使其出错。
1.正确重命名图像路径。
1.瞧,它应该会刷新.

vuktfyat

vuktfyat4#

Python在jupyter中是不一样的,我认为自动垃圾收集会在代码的某个点上工作,每一步都被暂停和缓存,这使得处理缓冲区非常占用内存。最简单的解决方案是在元素中添加析构函数,并在需要的步骤中删除对gc的需要。
这个例子使用空缓冲区作为加载,如果你有足够的内存同时打开所有的示例,如果不分块处理它们,只使用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]
pkwftd7m

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
欢迎提出意见和建议!

k4ymrczo

k4ymrczo6#

最好和最简单的解决方案是首先卸载Jupyter笔记本电脑,然后重新安装它。

相关问题