当按 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
还是让其他系统/模块为我做这件事?