Python 3.8:在SSD上放置大型词典以进行处理?
我有一些背景代码,加载两个pickle文件,比较/组合它们,然后保存结果。这些文件相当大,只有几百MB。因此,该过程使用了相当数量的RAM。我真的不在乎比较需要多长时间,但我的内存非常有限,同时我喜欢做其他事情。在编辑tmp_数据字典或就地编辑pickle文件时,是否有方法将其放置在SSD上?或者其他一些节省内存的方法 我当前的代码:Python 3.8:在SSD上放置大型词典以进行处理?,python,python-3.x,pickle,Python,Python 3.x,Pickle,我有一些背景代码,加载两个pickle文件,比较/组合它们,然后保存结果。这些文件相当大,只有几百MB。因此,该过程使用了相当数量的RAM。我真的不在乎比较需要多长时间,但我的内存非常有限,同时我喜欢做其他事情。在编辑tmp_数据字典或就地编辑pickle文件时,是否有方法将其放置在SSD上?或者其他一些节省内存的方法 我当前的代码: import pickle tmp_data=pickle.load( open(file0, "rb" ) ) tmp_data1=pic
import pickle
tmp_data=pickle.load( open(file0, "rb" ) )
tmp_data1=pickle.load( open(file1, "rb" ) )
#check and compare
for tmp_id in tmp_data1:
#check if already there
if tmp_id in tmp_data:
#check if the same
if tmp_data[tmp_id] != tmp_data1[tmp_id]:
#do some comparison job
tmp_data[tmp_id] = my_compareFunction(tmp_data[tmp_id],tmp_data1[tmp_id])
else:
tmp_data[tmp_id] = tmp_data1[tmp_id]
pickle.dump(tmp_data, open(outfile, "wb+" ))
在这种情况下,没有办法保存RAM,对不起 我注意到您打开()文件,但没有关闭它们。这是非常糟糕的做法。始终关闭您的文件。解决这一问题的两种可能方法是:
将open(file0,“rb”)作为f:
tmp_数据=pickle.load(f)
或
f=open(文件0)
tmp_数据=pickle.load(f)
f、 关闭()
del f#不必删除变量,
#限制全局变量的数量是一个很好的做法
那太糟糕了。谢谢你的提示!我假设pickle.load(open(file0,“rb”))将与with版本相同。我会改变的。