2017-06-20 3 views
0

So gerade arbeite ich an einem Python-Code, der liest eine CSV-Datei, etwas tun, dann in einer anderen CSV-Datei gespeichert. Ich habe mehr als 5000 große csv-Datei zu verarbeiten.multiprocess auf lesen oder schreiben csv

Ich denke, mit dem Multiprocess-Paket, mit mindestens 200 Dateien zur gleichen Zeit, um mir Zeit zu sparen. Es läuft jedoch nicht mehrere Threads zur selben Zeit wie ich es tun werde, hier ist mein Pseudocode.

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() 

Ich habe wenig Wissen über Python Multi-Prozess oder Threads und ich weiß nicht, ob ich das richtige Paket oder was auch immer bin mit.

Bitte helfen Sie mir, danke!

(auch renne ich dies auf Ubuntu vm, so frage ich mich, ob es eine Shell-Skript ist kann das gleiche tun, und das ist schneller)

Antwort

0

Legen Sie die außerhalb der for-Schleife verbinden sonst bist du Fügen Sie jedem Prozess sofort nach der Initialisierung bei

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

Oh, deshalb! Danke vielmals! Es funktioniert jetzt lol – hyousahyu

+0

Vergessen Sie nicht, die Antwort zu akzeptieren und zu verbessern: D – arithma

+0

Wenn es Ihnen nichts ausmacht, es läuft gerade richtig, aber ich sehe nicht, es spart jede Zeit .... bevor es läuft 12 min für eine Datei, und jetzt ist es wie die Summe der Zeit der einzelnen Prozesse. – hyousahyu

Verwandte Themen