Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Multithreading in Python?

Wie verwende ich Multithreading in Python?

王林
王林Original
2023-06-03 18:21:063293Durchsuche

Mit der Entwicklung von Computern werden die Daten, die wir verarbeiten müssen, immer größer und einige Aufgaben dauern lange. Um die Effizienz von Programmen zu verbessern, haben viele Programmierer begonnen, auf die Multithreading-Technologie zu achten, die es Programmen ermöglicht, mehrere Teilaufgaben gleichzeitig auszuführen. In diesem Artikel stellen wir vor, wie man Multithreading in Python verwendet.

1. Was ist Multithreading?

In der Programmierung bezeichnet ein Thread die kleinste Einheit in einem Programm, die unabhängig laufen kann. Im Vergleich zu Single-Thread-Programmen können Multi-Thread-Programme mehrere Aufgaben gleichzeitig ausführen. Das heißt, wenn wir mehrere Aufgaben erledigen müssen, können wir Multithreading verwenden, um diese Aufgaben gleichzeitig in verschiedenen Threads auszuführen, wodurch die für das Programm benötigte Zeit verkürzt wird.

2. Warum Multithreading verwenden?

Wenn wir ein Single-Thread-Programm verwenden und zwei lang laufende Aufgaben A und B erledigen möchten, müssen wir sie nacheinander ausführen. Das heißt, wenn Aufgabe A 10 Sekunden dauert, müssen wir diese 10 Sekunden warten, bevor wir Aufgabe B ausführen. Wenn Sie dies tun, ist die Effizienz des Programms sehr gering.

Wenn wir jedoch Multithreading-Technologie verwenden, um die Aufgaben A und B gleichzeitig auszuführen, beträgt die Gesamtzeit nur 10 Sekunden, selbst wenn beide 10 Sekunden dauern. Dadurch wird nicht nur die Effizienz verbessert, sondern auch Zeit gespart.

3. Multithreading in Python

Python verwendet das Threading-Modul, um Multithreading zu implementieren. Im Threading-Modul gibt es hauptsächlich die folgenden wichtigen Klassen:

  • Thread: Diese Klasse stellt einen separaten Thread dar.
  • Lock: Diese Klasse wird verwendet, um den Zugriff auf gemeinsam genutzte Ressourcen durch mehrere Threads zu steuern, um Konflikte und Datenbeschädigungen zu vermeiden.
  • RLock: Diese Klasse ähnelt Lock, ermöglicht jedoch, dass derselbe Thread die Sperre mehrmals erhält.
  • Bedingung: Diese Klasse wird für die Koordination und Kommunikation zwischen mehreren Threads verwendet.

Darüber hinaus gibt es einige Funktionen und Methoden wie current_thread(), enumerate() usw., die zur Unterstützung der Multithread-Programmierung verwendet werden.

Im Folgenden demonstrieren wir ein Multithreading-Beispiel und verwenden zur Implementierung die Klasse threading.Thread.

4. Beispiel

Wir werden einen einfachen Thread schreiben, um eine zeitaufwändige Aufgabe und eine kürzere Aufgabe zu simulieren. Wir werden zwei Threads verwenden, um beide Aufgaben zu erledigen, um den Nutzen von Multithreading zu demonstrieren.

Zuerst müssen wir das Threading-Modul vorstellen.

import threading

Als nächstes definieren Sie zwei Funktionen: eine zum Simulieren einer zeitaufwändigen Aufgabe und eine andere zum Simulieren einer kürzeren Aufgabe. Diese beiden Funktionen verwenden jeweils die Methode sleep () im Zeitmodul, um die Ausführungszeit der Aufgabe zu simulieren.

import time
 
def long_task():
  print('开始执行一个耗时的任务')
  time.sleep(5)   # 模拟任务执行时间为5秒钟
  print('执行完毕')
 
def short_task():
  print('开始执行一个较短时间的任务')
  time.sleep(2)   # 模拟任务执行时间为2秒钟
  print('执行完毕')

Als nächstes verwenden wir die Klasse threading.Thread, um zwei Threads zu erstellen. Jeder Thread führt jeweils die beiden oben genannten Funktionen aus.

t1 = threading.Thread(target=long_task)   # 创建线程1
t2 = threading.Thread(target=short_task)  # 创建线程2
 
t1.start()   # 启动线程1
t2.start()   # 启动线程2
 
t1.join()    # 等待线程1运行完毕
t2.join()    # 等待线程2运行完毕
 
print('程序运行结束')

Im obigen Code verwenden wir die Klasse threading.Thread, um zwei Threads t1 und t2 zu erstellen. Jeder Thread verwendet die beiden oben definierten Funktionen als Aufgaben, von denen long_task() für langfristige Aufgaben und short_task() für kurzfristige Aufgaben verwendet wird.

Im Hauptthread verwenden wir die Methode start(), um zwei Threads zu starten. Die start()-Methode ruft die run()-Methode des Threads auf, um die Aufgabe auszuführen. Dann verwenden wir die Methode join(), um zu warten, bis die Ausführung beider Threads abgeschlossen ist.

Abschließend geben wir „Program End“ aus, um uns mitzuteilen, dass das Programm beendet ist.

Führen Sie den obigen Code aus. Wir sehen die folgende Ausgabe:

开始执行一个耗时的任务
开始执行一个较短时间的任务
执行完毕
执行完毕
程序运行结束

Es ist ersichtlich, dass der Thread, der die kürzere Aufgabe ausführt, vor dem Thread endet, der die zeitaufwändige Aufgabe ausführt. Dies zeigt, dass Multithreading die Effizienz des Programms verbessert.

Obwohl dieses Beispiel einfach ist, zeigt es, wie man Python für die Multithread-Programmierung verwendet.

5. Zusammenfassung

In diesem Artikel haben wir das Konzept und die Vorteile der Multithread-Programmierung vorgestellt und wie Python das Threading-Modul zur Unterstützung der Multithread-Programmierung verwendet. Der Beispielcode zeigt, wie Sie Threads erstellen, Thread-Aufgaben definieren und die Ausführungsreihenfolge von Threads steuern.

Multithreading ist ein sehr nützliches Werkzeug, wenn wir große Datenmengen verarbeiten oder zeitaufwändige Aufgaben ausführen müssen. Ich hoffe, dieser Artikel hat Ihnen geholfen, die Grundkonzepte von Multithreading und die Verwendung von Multithreading in Python zu verstehen.

Das obige ist der detaillierte Inhalt vonWie verwende ich Multithreading 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