Ist es möglich, eine einzelne Task mit Multi-Processing/Threading zu beschleunigen? Mein Bauchgefühl ist, dass die Antwort "Nein" ist. Hier ist ein Beispiel dafür, was ich von einer „einzigen Aufgabe“ bedeuten:Beschleunigen Sie eine einzelne Task mit Multi-Processing oder Threading
for i in range(max):
pick = random.choice(['on', 'off', 'both'])
Mit dem Argumente 10000000 es etwa 7,9 Sekunden dauert, auf meinem System zu vervollständigen.
Ich habe ein grundlegendes Verständnis der Verwendung von Multi-Processing und Threading für mehrere Aufgaben. Wenn ich zum Beispiel 10 Verzeichnisse habe, die jeweils X Dateien enthalten, die gelesen werden müssen, könnte ich 10 Threads erstellen.
Ich vermute, dass die einzelne Aufgabe nur einen einzigen Prozess verwendet (Task-Manager meldet CPU-Auslastung ist minimal). Gibt es eine Möglichkeit, meine anderen Kerne in solchen Fällen zu nutzen? Oder erhöhen Sie die CPU-/Speichergeschwindigkeit, um schnellere Ergebnisse zu erzielen?
10 Multiprocessing kann helfen, mehrere Threads in einem Prozess nicht so viel (Stichwort: "globale Interpreter Sperre" aka "GIL") –
@Michael Butscher: Könnten Sie ein Beispiel dafür geben, wie ich den Code, den ich erwähnt, mit Multiprocessing aufteilen könnte ? –
Sie können http://mikecvet.wordpress.com/2010/07/02/parallel-mapreduce-in-python/ für ein Beispiel lesen –