在大规模数据(10000行*7000列)用xlsxwriter写入excel的时候会出现内存报错,
#写入excel
def write_excel_xlsx(file_name,value):
workbook = xlsxwriter.Workbook(file_name) # 创建工作表
worksheet = workbook.add_worksheet('sheet1') # 写单元格
index=len(value)
for i in range(0, index):
worksheet.write_row(i, 0,value[i]) # 写列
print i
workbook.close()
print u"xlsx格式表格写入数据成功!"
程序运行时,内存急速飙升,当飙到1300M左右时就报错。查了下,说32位python的内存限制是2G,超过2G就报错,64位的python则没有限制。可是一个写操作为什么会这么耗内存呢?难道是大家说的python的内存释放机制有缺陷,于是研究了下del函数和gc机制,并没有搞清楚怎么用到我这里。
于是朋友建议没事不要瞎操纵excel,让我写csv好了
于是换成了写csv的代码,爆内存的问题就没有了
#写入csv
def write_csv(file_name,value):
out = open(file_name,'ab+')
out.write(codecs.BOM_UTF8)
csv_write = csv.writer(out,dialect='excel')
index=len(value)
for i in range(0, index):
csv_write.writerow(value[i])
#print i
out.close()
print u"csv格式表格写入数据成功!"
但是又出现了新的错误,计算tfidf后矩阵的赋值运算有报内存错误
transformer=TfidfTransformer
tfidf=transformer().fit_transform(X)
weight=tfidf.toarray()
经过我的多次运行,发现这个程序很抽风,weight=tfidf.toarray()这里报内存错误有时候报有时候不报!第一次运行的时候报错了,后面几次运行都没报错了!迷之不解!
**