2017-06-20 140 views
0

所以现在我正在研究一个python代码,它读取一个csv文件,做一些事情,然后保存在另一个csv文件中。我有超过5000个大型csv文件要处理。读取或写入多进程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脚本可以做同样的事情,这是更快)

回答

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) 
+0

哦,这就是为什么!非常感谢!现在d – hyousahyu

+0

不要忘了接受的答案,并给予好评分钟为一个文件,现在就像总结各个进程的时间。 – arithma

+0

如果你不介意的话,它的正常运行,但我没有看到它的储蓄任何时候....在此之前,它的运行12:它的工作现在笑 – hyousahyu