single
Herausforderung: Der Parallele Quadratsammler
Swipe um das Menü anzuzeigen
Multiprocessing in Python ermöglicht das gleichzeitige Ausführen mehrerer Prozesse, wobei jeder Prozess über einen eigenen Python-Interpreter und eigenen Speicherbereich verfügt. Dieser Ansatz ist besonders nützlich für CPU-intensive Aufgaben, bei denen mehrere CPU-Kerne genutzt werden sollen, um Berechnungen schneller durchzuführen. Durch den Einsatz von Multiprocessing kann die Leistung bei rechenintensiven Operationen wie Datenverarbeitung, wissenschaftlichen Berechnungen oder Simulationen erheblich gesteigert werden.
Die Klasse multiprocessing.Manager bietet eine Möglichkeit, gemeinsam genutzte Objekte – wie Listen und Dictionaries – zu erstellen, auf die mehrere Prozesse sicher zugreifen und die sie verändern können. Wenn Ergebnisse gesammelt oder Daten zwischen verschiedenen Process-Instanzen koordiniert werden müssen, sollte immer ein Manager zur Erstellung dieser gemeinsamen Objekte verwendet werden. Normale Python-Listen und -Dictionaries werden nicht zwischen Prozessen geteilt, sodass Änderungen in einem Prozess für andere nicht sichtbar sind. Mit einer Manager-Liste kann jeder Prozess Daten anhängen oder ändern, und alle Änderungen sind für jeden Prozess sichtbar, der dieses gemeinsame Objekt verwendet.
1234567891011121314151617181920from multiprocessing import Process, Manager def add_value(value, shared_list): shared_list.append(value) if __name__ == "__main__": manager = Manager() shared_list = manager.list() processes = [] values = [10, 20, 30, 40, 50] for v in values: p = Process(target=add_value, args=(v, shared_list)) processes.append(p) p.start() for p in processes: p.join() print("Collected results:", list(shared_list))
Dieser Code zeigt, wie multiprocessing.Manager verwendet wird, um eine gemeinsam genutzte Liste zu erstellen, auf die mehrere Prozesse zugreifen und die sie verändern können. Jeder Prozess berechnet das Quadrat einer Zahl und fügt das Ergebnis der gemeinsamen Liste hinzu. Durch die Verwendung einer Manager-Liste wird sichergestellt, dass alle Prozesse Daten sicher gemeinsam nutzen und sammeln können, sodass Ergebnisse von parallel laufenden Prozessen zusammengeführt werden können.
Wischen, um mit dem Codieren zu beginnen
Schreiben Sie eine Funktion namens compute_square, die eine einzelne Ganzzahl und eine results-Liste als Argumente erhält, das Quadrat der Ganzzahl berechnet und das Ergebnis an die Liste results anhängt.
Verwenden Sie anschließend die Klasse multiprocessing.Process, um für jede Zahl in der Liste numbers einen separaten Prozess zu erstellen, der ihr Quadrat parallel berechnet. Sammeln Sie die Ergebnisse aller Prozesse und speichern Sie sie in der Variablen results.
- Implementieren Sie die Funktion
compute_squaremit zwei Argumenten: der zu quadrierenden Ganzzahl und der Listeresults. - Berechnen Sie in
compute_squaredas Quadrat der Ganzzahl und hängen Sie es an die Listeresultsan. - Erstellen Sie für jede Zahl in
numberseinenProcess, der aufcompute_squaremit der Zahl undresultsals Argumente abzielt. - Starten Sie alle Prozesse und führen Sie anschließend ein Join durch, um sicherzustellen, dass alle Berechnungen abgeschlossen sind, bevor Sie die Ergebnisse überprüfen.
- Speichern Sie alle berechneten Quadrate in der Liste
results.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen