如何关闭pyglet中的文件资源

How to close file resources in pyglet

这绝对是 this question 的重复,但看到它在 3 个月内得到了 0 个回复,我似乎找不到答案。问题应该很简单:在 pyglet 中处理完一个文件(比如视频或声音)后,如何关闭该文件?我有一个应用程序必须遍历几十万个文件,依次处理每个文件。出于明显的原因,我得到 OSError: Too many open files。有没有办法强制关闭 pyglet 的文件?

对于声音或视频文件,您可以使用 Player delete() method 关闭当前源。

您还可以通过在加载调用中将流参数设置为 false 将资源直接加载到内存中而不是从磁盘流式传输:

pyglet.media.load(filename, streaming=False)

如果所有其他方法都失败了,请尝试使用 python.gc.collect() 强制垃圾收集器。