【发布时间】:2019-08-11 09:08:26
【问题描述】:
我正在使用 pickle 在内存中加载一个大矩阵。第一次运行脚本时,加载整个对象大约需要 14 秒。相反,随后的运行只需要 4 秒。似乎对象被加载到内存中并且在执行后没有释放。这是正常的吗?对象不被引用,垃圾回收器不应该立即释放吗?
我用不同的文件尝试了不同的时间,结果总是一样的。
这是我用来测试所描述行为的代码:
def load():
with open('batch-0', 'rb') as read:
data = pickle.load(read)
if __name__ == '__main__':
cProfile.run('load()')
【问题讨论】:
-
您确定这与您的操作系统缓存文件访问无关吗?