Heim  >  Artikel  >  Backend-Entwicklung  >  Wie versteht man Prozesse und Threads in Python?

Wie versteht man Prozesse und Threads in Python?

乌拉乌拉~
乌拉乌拉~Original
2018-08-23 17:41:321355Durchsuche

Im folgenden Artikel erfahren wir, was Prozesse und Threads in Python sind. Erfahren Sie mehr über Python-Prozesse und -Threads und welche Rolle Python-Prozesse und -Threads bei der Python-Programmierung spielen können.


Was ist „Multitasking“? Vereinfacht ausgedrückt kann das Betriebssystem mehrere Aufgaben gleichzeitig ausführen. Sie surfen beispielsweise mit einem Browser im Internet, hören MP3-Player und erledigen Ihre Hausaufgaben. Dabei werden mindestens drei Aufgaben gleichzeitig ausgeführt. Viele Aufgaben laufen stillschweigend gleichzeitig im Hintergrund, werden aber nicht auf dem Desktop angezeigt.

Heutzutage erfreuen sich Multi-Core-CPUs großer Beliebtheit, aber früher konnten auch Single-Core-CPUs Multitasking ausführen. Wie führt eine Single-Core-CPU mehrere Aufgaben aus, da der CPU-Ausführungscode sequentiell ausgeführt wird?

Die Antwort ist, dass das Betriebssystem abwechselnd jede Aufgabe ausführt: Aufgabe 1 wird 0,01 Sekunden lang ausgeführt, wechselt zu Aufgabe 2, Aufgabe 2 wird 0,01 Sekunden lang ausgeführt, dann wechselt sie zu Aufgabe 3 und wird 0,01 Sekunden lang ausgeführt ... und so weiter. Oberflächlich betrachtet wird jede Aufgabe abwechselnd ausgeführt, aber da die CPU-Ausführungsgeschwindigkeit so hoch ist, haben wir das Gefühl, als würden alle Aufgaben gleichzeitig ausgeführt.

Eine echte parallele Ausführung von Multitasking kann nur auf einer Multi-Core-CPU erreicht werden. Da die Anzahl der Aufgaben jedoch weitaus größer ist als die Anzahl der Kerne der CPU, plant das Betriebssystem automatisch viele Aufgaben Jeder Kern wird nacheinander ausgeführt.

Für das Betriebssystem ist eine Aufgabe ein Prozess (Prozess). Zum Beispiel startet das Öffnen eines Browsers einen Browserprozess, das Öffnen eines Notepads startet einen Notepad-Prozess und das Öffnen von zwei Notepads startet zwei Notepad-Prozesse Ein Word-Prozess wird gestartet, wenn ein Word geöffnet wird.

Einige Prozesse können mehr als eine Sache gleichzeitig ausführen, z. B. Word, das gleichzeitig Eingabe, Rechtschreibprüfung, Drucken usw. durchführen kann. Wenn Sie innerhalb eines Prozesses mehrere Dinge gleichzeitig erledigen möchten, müssen Sie mehrere „Unteraufgaben“ gleichzeitig ausführen. Wir nennen diese „Unteraufgaben“ innerhalb der Prozess-Threads.

Da jeder Prozess mindestens eine Sache tun muss, hat ein Prozess mindestens einen Thread. Natürlich kann ein komplexer Prozess wie Word mehrere Threads haben und mehrere Threads können gleichzeitig ausgeführt werden. Die Ausführungsmethode des Multithreadings ist dieselbe wie bei mehreren Prozessen. Das Betriebssystem wechselt auch schnell zwischen mehreren Threads. Zulassen, dass die Threads alle abwechselnd kurz ausgeführt werden und scheinbar gleichzeitig ausgeführt werden. Um tatsächlich mehrere Threads gleichzeitig ausführen zu können, ist natürlich eine Multi-Core-CPU erforderlich.

Alle Python-Programme, die wir zuvor geschrieben haben, sind Prozesse, die einzelne Aufgaben ausführen, das heißt, es gibt nur einen Thread. Was ist, wenn wir mehrere Aufgaben gleichzeitig ausführen möchten?

Es gibt zwei Lösungen:

Eine besteht darin, mehrere Prozesse zu starten. Obwohl jeder Prozess nur einen Thread hat, können mehrere Prozesse mehrere Aufgaben gleichzeitig ausführen.

Eine andere Methode besteht darin, einen Prozess zu starten und mehrere Threads in einem Prozess zu starten, sodass mehrere Threads mehrere Aufgaben gemeinsam ausführen können.

Natürlich gibt es eine dritte Methode, die darin besteht, mehrere Prozesse zu starten, und jeder Prozess startet mehrere Threads, sodass mehr Aufgaben gleichzeitig ausgeführt werden können. Natürlich ist dieses Modell komplexer in der Praxis selten verwendet.

Zusammenfassend gibt es drei Möglichkeiten, Multitasking zu implementieren:

1 .Multiprozess + Multithread-Modus.

Führen Sie mehrere Aufgaben gleichzeitig aus, sondern müssen miteinander kommunizieren und koordinieren. Manchmal muss Aufgabe 1 angehalten und gewartet werden, bis Aufgabe 2 abgeschlossen ist Manchmal können Aufgabe 3 und Aufgabe 4 nicht gleichzeitig ausgeführt werden, sodass die Komplexität von Multiprozess- und Multithread-Programmen viel höher ist als die von Einzelprozess- und Single-Thread-Programmen, die wir zuvor geschrieben haben.

Aufgrund der hohen Komplexität und Schwierigkeit beim Debuggen möchten wir kein Multitasking schreiben, es sei denn, es muss sein. Allerdings kommt es oft vor, dass Multitasking nicht mehr wegzudenken ist. Denken Sie daran, einen Film auf einem Computer anzusehen. Ein Thread muss das Video und ein anderer Thread den Ton abspielen. Andernfalls kann bei der Implementierung in einem einzelnen Thread nur das Video und dann der Ton abgespielt werden, oder der Ton muss zuerst abgespielt werden und dann das Video. Das ist offensichtlich nicht möglich.

Python unterstützt sowohl Multiprozess als auch Multithreading.

Das Obige ist der gesamte Inhalt dieses Artikels. In diesem Artikel wird hauptsächlich das Wissen über Prozesse und Threads in Python vorgestellt.

Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.

Weitere Informationen zu diesem Thema finden Sie in der Spalte

Python-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonWie versteht man Prozesse und Threads in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn