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