Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.8:在SSD上放置大型词典以进行处理?_Python_Python 3.x_Pickle - Fatal编程技术网

Python 3.8:在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

我有一些背景代码,加载两个pickle文件,比较/组合它们,然后保存结果。这些文件相当大,只有几百MB。因此,该过程使用了相当数量的RAM。我真的不在乎比较需要多长时间,但我的内存非常有限,同时我喜欢做其他事情。在编辑tmp_数据字典或就地编辑pickle文件时,是否有方法将其放置在SSD上?或者其他一些节省内存的方法

我当前的代码:

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版本相同。我会改变的。