仅在可用内存太少时才清空内存

时间:2015-03-19 23:39:46

标签: python caching memory garbage-collection

当按 A 时,我在内存中加载了约400 MB的声音数据(例如:加载钢琴样本)。

当按 B 时,安装预设将加载另一个400 MB(例如:小提琴预设)。按下 C 时的同意(让我们说小号预设)等等。

请注意,在某个时间只播放一种乐器,所以基本上加载C时,我们不再需要A,B,D,E等。

但是我想将A,B,C,...,Z保留在内存中只要有足够的可用内存,这样如果我从C快速切换到A,数据仍在内存中...所以我不需要等待来加载数据。

但是因为记忆不是无限的,我希望如果我们接近完全记忆,那么最古老的东西会被删除。就像垃圾收集器一样,如果只有很少的可用内存可以清空垃圾箱

我应该自己处理这个问题,如下:

presets_in_memory = []

def button_press_callback(key):
     if key == A:
         presets_in_memory.append(Preset(1))
     if key == B:
         presets_in_memory.append(Preset(2))
     ...
     while (FreeMemory() < 100 000 000):
         del presets_in_memory[0]      # empties the oldest objects while free mem < 100MB
                                       # so that the garbage collector
                                       # will free their memory

还是让其他系统/模块为我做这件事?

0 个答案:

没有答案