读取或写入csv上的多进程

时间:2017-06-20 22:06:55

标签: python performance csv multiprocessing

所以现在我正在编写一个python代码,它读取一个csv文件,做一些事情,然后保存在另一个csv文件中。我有超过5000个大型csv文件要处理。

我在考虑使用多进程包,同时运行至少200个文件,以帮助我节省时间。但是,它并没有像我一样同时运行多个线程,这是我的伪代码。

from multiprocessing import Process

def f(inputfile,outputfile):
    open inputfile as reader
    open outputfile as writer
    #do sth

if __name__ == "__main__":
    for a list of inputfile_names/outputfile_names:
          p=Process(target=f,args=(input_names,output_names,))
          p.start()
          p.join()

我对python多进程或线程知之甚少,我不知道我是否正在使用正确的包或其他任何东西。

请帮帮我,谢谢!

(我也是在ubuntu vm上运行它,所以我想知道是否有任何shell脚本可以做同样的事情,哪个更快)

1 个答案:

答案 0 :(得分:0)

将联接放在for循环之外,否则您在启动后立即加入每个进程

from multiprocessing import Process
from time import sleep

def f(inputfile,outputfile):
    open inputfile as reader
    open outputfile as writer
    #do sth

if __name__ == "__main__":
    processes = []
    for a list of inputfile_names/outputfile_names:
          p=Process(target=f,args=(input_names,output_names,))
          p.start()
          processes.append(p)
    #sleep an increment of time until all processes are done
    while len(p for p in processes if p.is_alive()) > 0:
          sleep(0.1)