1029 Stimmen

Mehrfachverarbeitung gegen Gewindeschneiden Python

Ich versuche, die Vorteile von [multiprocessing](http://docs. python.org/library/multiprocessing) gegenüber threading zu verstehen. Ich weiß, dass multiprocessing das Global Interpreter Lock umgeht, aber welche anderen Vorteile gibt es noch und kann threading nicht dasselbe tun?

9 Stimmen

Ich denke, das könnte im Allgemeinen nützlich sein: blogs.datalogics.com/2013/09/25/… Obwohl je nach Sprache interessante Dinge passieren können. Zum Beispiel sind laut Andrew Sledges Link die Python-Threads langsamer. Bei Java ist es genau umgekehrt, Java-Prozesse sind viel langsamer als Threads, weil für einen neuen Prozess eine neue JVM benötigt wird.

7 Stimmen

Keine der beiden Top-Antworten (aktuelle Top, zweite Antwort) behandelt das GIL in irgendeiner signifikanten Weise. Hier ist eine Antwort, die das GIL-Aspekt behandelt: stackoverflow.com/a/18114882/52074

0 Stimmen

@AndrasDeak können wir das umgekehrt schließen gemäß: meta.stackoverflow.com/questions/251938/…, da diese viel mehr Upvotes/Antworten hat?

3voto

Ein Prozess kann mehrere Threads haben. Diese Threads können sich den Speicher teilen und sind die Ausführungseinheiten innerhalb eines Prozesses.

Prozesse laufen auf der CPU, daher befinden sich Threads unter jedem Prozess. Prozesse sind eigenständige Entitäten, die unabhhängig voneinander laufen. Wenn Sie Daten oder Zustand zwischen den Prozessen teilen möchten, können Sie ein Speicherungstool wie Cache (Redis, Memcache), Dateien oder eine Datenbank verwenden.

0 Stimmen

Prozesse werden auf der CPU ausgeführt, sodass Threads unter jedem Prozess liegen. Wie führt der erste Teil dieses Satzes zum zweiten Teil? Threads werden auch auf der CPU ausgeführt.

0voto

Alex Punkte 19

Wie ich an der Universität gelernt habe, sind die meisten Antworten oben richtig. In DER PRAXIS auf verschiedenen Plattformen (immer mit Python) führt das Erzeugen mehrerer Threads dazu, dass dies wie das Erzeugen eines Prozesses endet. Der Unterschied besteht darin, dass die mehreren Kerne die Last teilen, anstatt dass nur 1 Kern alles mit 100% verarbeitet. Wenn Sie also zum Beispiel 10 Threads auf einem 4-Kern-PC starten, erhalten Sie nur die 25% der CPU-Leistung!! Und wenn Sie 10 Prozesse starten, erhalten Sie eine CPU-Auslastung von 100% (wenn Sie keine anderen Einschränkungen haben). Ich bin kein Experte in allen neuen Technologien. Ich antworte anhand eigener Erfahrungswerte.

0 Stimmen

Auf verschiedenen Plattformen (immer mit Python) führt das Erzeugen mehrerer Threads in der Praxis dazu, dass es sich wie das Erzeugen eines Prozesses verhält. Sie haben jedoch überhaupt nicht dieselben Anwendungsfälle, daher bin ich mir nicht sicher, ob ich dem zustimme.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X