2016-12-15 54 views
0

首先感谢您提前!Python泡菜记忆问题

因此,我正在尝试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 32位还是64位?如果是32,请尝试切换到64位版本。 –

+0

@MaximilianMatthéPython 3.5.2 | Anaconda 4.2.0(64位)win32 - 我怀疑这是问题所在,但感谢您的迅速响应! – lel23

回答

0

我有我通过安装Python的64位版本解决了类似的问题。如果您试图腌制的数据不是太大,这可能会解决您的问题。

+0

我目前正在运行64位Python - 但谢谢你的回应 – lel23