2016-12-15 8 views
0

まずは事前におねがいします!Python Pickle Memoryの問題

私は、特許引用情報を含む大きな辞書オブジェクトをPickle.dumpしようとしています。

私は冗長ではないエラー 'MemoryError'を受け取りました。

これは、ファイルが大きすぎてPickleがメモリにダンプできないためです。誰もが私はこの問題を回避する方法/大きなファイルサイズのメモリストレージの良い代替案をどのように得ることができるかの提案を持っています。

私は単にコードを使用していダンプする:

def pickleDumpCd(): 
with open("./PickleDumpCd","wb")as cdFP: 
    pickle.dump(createSameTSVDateDict("uspatentcitation.tsv"),cdFP) 

がダンプであることがTSV(以下コード)から作成した辞書です:

def createSameTSVDateDict(path): 
citationDateDict = defaultdict() 
with open(path) as citTSV: 
    print("Creating Same TSV Date Dict") 
    header = 0 
    for line in csv.reader(citTSV, dialect="excel-tab"): 
     if header > 0 and line[1] not in citationDateDict: 
      citationDateDict[line[1]] = [(line[3],line[2])] 
     elif header > 0 and line[2] in citationDateDict: 
      citationDateDict[line[1]].append((line[3],line[2])) 
     header += 1 
return citationDateDict 

この問題は、私を苦しめてきました一方、どのような思考/提案も非常に感謝しています。

おかげで、 ルイ

+0

通常、「ファイルが大きすぎます」ではMemoryErrorは発生しませんが、Pythonで十分なメモリ(RAM)を割り当てることができないためです。 Python 32bitまたは64bitを使用していますか? 32の場合は、64bit版に切り替えてみてください。 –

+0

@MaximilianMatthéPython 3.5.2 | Anaconda 4.2.0(64-bit)win32 - これは問題ではないかと思いますが、迅速な対応に感謝します! – lel23

答えて

0

は、私は私のpythonの64ビット版をインストールすることによって解決し、同様の問題がありました。ピクルしようとしているデータが大きすぎない場合は、問題を解決する可能性があります。

+0

私は現在64ビットのPythonを実行しています - しかし、応答のおかげで – lel23