删除python中二进制数据的内存缓存

问题描述

我希望使用我编写的代码加快大型二进制文件的加载和处理速度。该代码有效,但速度很慢。我想进行改进,但是每当我第二次加载文件时,我都无法获得 真正 加载速度,因为缓存的内存会加快速度。如何禁用此缓存,或者如何衡量代码真实性能,以便我可以对其进行迭代?

这是我在做什么:

  1. 首先调用 first 来加载一个大的二进制文件
  2. 索引到 memapped 数组以检索我想要的值(这是缓慢的部分,afaik)

我尝试手动删除 np.memmap 存储数据的变量,然后使用 del 对其调用垃圾收集器,但这无济于事。

我应该如何从内存中释放这些信息,以便获得真实的加载时间(或者我如何解决这个问题来衡量真实的性能)?我需要 Cython 来妥善处理这个问题吗,我希望现在不要去那里。

编辑,部分代码

加载内存映射:

gc.collect()

这两行都是从我的代码中的一个函数调用的。 在这些之后,我尝试运行垃圾收集器:

traces  = np.memmap(datapath,dtype='int16',mode='r',offset=offset,shape=(number_samples,number_channels))

# index into this,where waveform_ids are the indices I need
waveforms=traces[waveform_ids,:].astype(np.float32).T

但是这并没有恢复原来的缓慢加载时间,因此我认为它没有清除内存缓存

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)