2017-06-20 129 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