私はPythonの初心者です。 2つのファイルから2つのdictをロードすると、メモリエラーが発生します。これらの2つのファイルがPythonで2 dictを読み込む方法は?
with open(filename, 'rb') as f:
hashtable_album = {}
for line in f:
# print i
p = 0
q = line.find("####")
# print p
# print q
itembuf = line[p:q]
# print itembuf
dictbuf = line[q + 4:-1]
# print line
a = json.loads(dictbuf)
# print a
# print type(a)
hashtable_album[itembuf] = a
f.close()
with open(filename2, 'rb') as f2:
hashtable_item={}
i=0
for line in f:
print len(dic)
print i
#print line
p = 0
q = line.find("####")
# print p
# print q
itembuf = line[p:q]
# print itembuf
dictbuf = line[q + 4:-1]
# print line
a = json.loads(dictbuf)
#print a
# print type(a)
hashtable_item[itembuf] = a
i=i+1
f2.close()
ある最初のファイルは400メガバイト程度であり、それは200メガバイト程度である第二1、次に大きい、と私は私がメモリエラーを得た第二のファイルをロードするとき、私は最初のファイルsuccessfully.Butを読み込むことができます
Traceback (most recent call last):
File "E:/py_workspace/1.0_memory_error.py", line 44, in <module>
hashtable_item[itembuf] = a
MemoryError
として私が最初に読んFILE2としてファイルをロードするとフォローFILE1順序を変更した場合、私は第二のファイルをロードするとき、メモリエラーもあります。 私は
hashtable_album = {}
としてfile1をロードし、ロードFILE2に行くの後、私は辞書をクリアするように、メモリエラーが辞書から来ていると思います。そして今度はメモリエラーなしで動作します。 しかし、私はこれらの2つの辞書を同時に使用する必要があります。では、どうすれば一緒に読み込むことができますか?
ヒント:dictを保存するためにcPickleを試しましたが、作業はできません。また、メモリエラーも発生します。
**同じスクリプト**のデータコンテナとコンパレータは、非常に悪い考えです!あなたにとって重要なデータはどこか保存しますが、なぜデータベースシステムを使用しないのですか?直接IOは常にエラーを発生させます(ハードウェアパフォーマンスのバグがあります)。このコードを「仮想OS」で実行しましたか? – dsgdfg