Zuvor musste ich ein wenig Big Data analysieren, was viel Zeit in Anspruch nahm, um es zu verarbeiten. Zu diesem Zeitpunkt werde ich die Methode zusammenfassen, mit der die Verarbeitung beschleunigt wird.
Im Folgenden wird das Multiprozessor-Modul verwendet.
multi.py
from multiprocessing import Pool
from multiprocessing import Process
Es ist so.
multi.py
def function(hoge):
#Was du machen willst
return x
def multi(n):
p = Pool(10) #Maximale Anzahl von Prozessen:10
result = p.map(function, range(n))
return result
def main():
data = multi(20)
for i in data:
print i
main()
In diesem Fall lautet der Prozess "Führen Sie die Funktion 20 Mal aus, indem Sie den Wert auf 0,1,2 ... 19 ändern". Da der Rückgabewert der Funktion als Liste im Ergebnis enthalten ist, wird er standardmäßig empfangen und ausgegeben.
Außerdem kann ich in meiner Umgebung bis zu 12 Kerne verwenden (6 Kerne und 12 Threads, um genau zu sein), sodass ich die maximale Anzahl von Prozessen auf 10 festlege. Wenn Sie es maximal verwenden, ist es schwierig, den Browser zu öffnen, sodass Sie ihn sicher stoppen können.
Die CPU-Auslastungsrate während der Parallelverarbeitung wird ebenfalls aufgelistet. Auf diese Weise können Sie sehen, dass die parallele Verarbeitung mit mehreren Kernen ordnungsgemäß ausgeführt wird.
Sie können auch die Prozess-ID abrufen, die für jeden Prozess verantwortlich ist.
multi.py
import os
def fuction(hoge):
#Was du machen willst
print 'process id:' + str(os.getpid())
return x
#Unten weggelassen
Es ist interessant zu wissen, dass wenn Sie es so anzeigen, es in einem anderen Prozess ausgeführt wird.
Der Prozess, der ungefähr 35 Stunden dauerte, war in etwas mehr als 4 Stunden abgeschlossen. Die Bearbeitungszeit beträgt weniger als 1/10, was ein ausreichendes Ergebnis ist.
Natürlich nimmt die Geschwindigkeit jedes Prozesses nicht zu, daher ist es notwendig, die Arbeit gleichmäßig zu verteilen, um die Effizienz zu verbessern, aber ich denke, dass dies nützlich ist, da das Analysesystem viele solcher Dinge enthält.
Recommended Posts