清除pyglet资源缓存

时间:2013-01-16 21:03:51

标签: python resources pyglet

有没有办法清除pyglet中的资源缓存?资源的源映像在磁盘上更改,我需要重新加载它,但pyglet使用缓存的资源。 这就是我的工作:

pyglet.resource.path = [self.path]
pyglet.resource.reindex()
self.img = pyglet.resource.image(self.filename)

然后图像文件在磁盘上发生变化,我想重新加载它,我再次执行上述操作,但是pyglet似乎使用了缓存的图像。

1 个答案:

答案 0 :(得分:1)

使用pyglet时遇到了同样的问题。这是我提出的解决方案:

def clear_cache(filename):
        if filename in pyglet.resource._default_loader._cached_images:
            del pyglet.resource._default_loader._cached_images[filename]

对我有用!

说明:

pyglet源代码中查看后,似乎resource模块将图像名称记录在名为_cached_images的字典中。

当您在示例中使用资源模块时,似乎也会在资源模块中创建名为_default_loader的对象。因此,缓存位于_default_loader._cached_images

我确信有更好的方法来完成我所做的事情,例如对资源进行子类化并在那里添加我自己的clear_cache方法。但我是编程的新手,我对resource模块中的所有内容都不太了解,所以这是我提出的最好的。