1

這裏是我讀取一個名爲interact.csv的巨大文件(超過15個GiB)的代碼,並對每行進行一些檢查並根據檢查結果將交互文件拆分爲兩個單獨的文件:test.csv和trains.csv。Python快速讀取和寫入文件

我的機器停下來需要兩天以上的時間。有什麼辦法可以使這種代碼更快,也許使用某種並行性?

target_items: a list containing some item IDs 

目前的方案:

with open(interactions) as interactionFile, open("train.csv", "wb") as train, open("test.csv", "wb") as test: 
    header=interactionFile.next(); 
    train.write(header+'\n') 
    test.write(header+'\n') 
    i=0 
    for row in interactionFile: 
     # process each row 
     l = row.split('\t') 
     if l[1] in target_items: 
      test.write(row+'\n') 
     else: 
      train.write(row+'\n') 
     print(i) 
     i+=1 
+5

是'target_items'長列表嗎?如果這是一個大的列表,你可以通過將其轉換爲一個集合來獲得顯着的加速。 – roganjosh

+0

嘗試學習hadoop。並行處理是它的核心功能 –

+0

它包含15000個元素。 – HimanAB

回答

0

看看用Cython。它基於C,你應該修改你的代碼,它的運行速度要快得多。

+1

當OP得到握手使用Cython並編譯代碼,只需在評論中提供建議即可完成任務。微小的變化會帶來數量級的改善。 – roganjosh