2
我的代碼中有一個內存泄漏,它試圖將csv讀入內存過大的pandas。我使用chunksize進行迭代,但每次迭代所使用的內存量正在增加(按塊的大小)。 在我中斷了進程並清除了命名空間之後,我的任務管理器中的python進程仍然佔用n *塊大小,並完成了n次迭代。 有誰知道循環中的哪一步在內存中創建了一些不被刪除的東西?而且,如果是這樣,我該如何強行刪除它?python熊貓重新編譯索引中的內存泄露
import pymysql
import pandas as pd
import numpy as np
import sysconn=pymysql.connect(host='localhost', port=3306, user='root', passwd='******', db='')
curr = conn.cursor()
curr.execute('CREATE DATABASE IF NOT EXISTS addclick')
curr.execute('USE addclick')
datachunks = pd.read_csv('train.csv', chunksize=1e5)
i=0
print 'Start loading main database. This may take a while. Chunks:'
for chunk in datachunks:
i=i+1
print(i)
sys.stdout.flush()
shuffle = chunk.reindex(np.random.permutation(chunk.index))
validationchunk = shuffle.iloc[:int(1e4)]
validationchunk.to_sql('validation', conn, if_exists='append', flavor='mysql', index=False)
trainchunk = shuffle.iloc[int(1e4):]
trainchunk.to_sql('train', conn, if_exists='append', flavor='mysql', index=False)
目的是分裂的培訓和驗證組csv文件,並把它們放在一個SQL數據庫來聚集更容易獲得。