Wielowątkowość (ang. multi-threading) to technika programowania, która pozwala na równoczesne wykonywanie wielu zadań w obrębie jednego procesu. W Pythonie mechanizm ten jest realizowany za pomocą modułu threading
. W poniższym artykule wyjaśnimy, jak skutecznie stosować wielowątkowość w Pythonie, przedstawiając kompletny i rozbudowany przykład.
Przykład użycia wielowątkowości
Rozważmy prosty scenariusz, w którym chcemy równocześnie uruchomić kilka zadań – symulując pobieranie różnych plików z internetu. Choć w rzeczywistości do pobierania plików użylibyśmy asynchronicznych operacji wejścia/wyjścia lub dedykowanych bibliotek, ten przykład demonstruje podstawy tworzenia i zarządzania wątkami w Pythonie.
import threading
import time
# Funkcja symulująca pobieranie pliku
def download_file(file_name):
print(f"Początek pobierania {file_name}")
# Symulacja czasu potrzebnego na pobranie pliku
time.sleep(5)
print(f"Zakończono pobieranie {file_name}")
# Lista plików do pobrania
files = ["plik1.mp3", "plik2.mp3", "plik3.mp3"]
# Lista do przechowywania wątków
threads = []
# Tworzenie i uruchamianie wątków
Jak to działa?
- Import modułów: Na początku importujemy niezbędne moduły:
threading
dla obsługi wielowątkowości oraztime
do symulacji czasochłonnych operacji. - Definicja funkcji zadania:
download_file
to funkcja, która symuluje pobieranie pliku. Używatime.sleep(5)
, aby zasymulować operację, która zajmuje pewien czas (5 sekund). - Przygotowanie listy plików: Tworzymy listę
files
zawierającą nazwy plików do pobrania. - Tworzenie wątków: Dla każdego pliku z listy tworzymy nowy wątek, przekazując funkcję
download_file
jako cel (target) oraz nazwę pliku jako argument. Wątek jest dodawany do listythreads
i uruchamiany metodąstart()
. - Oczekiwanie na wątki: Pętla
for
iterująca przez listęthreads
używa metodyjoin()
, aby poczekać na zakończenie każdego wątku. - Zakończenie pracy: Po zakończeniu pracy wszystkich wątków wyświetlany jest komunikat o zakończeniu pobierania.
Podsumowanie
Wielowątkowość w Pythonie umożliwia efektywne wykonywanie wielu operacji równolegle, co jest szczególnie przydatne w zadaniach wymagających intensywnych operacji wejścia/wyjścia lub przy uruchamianiu długotrwałych procesów w tle. Używając modułu threading
, możemy łatwo tworzyć i zarządzać wątkami, co zwiększa wydajność i reaktywność naszych aplikacji.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.