Jak osiągnąć wielowątkowość w Pythonie?

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 oraz time do symulacji czasochłonnych operacji.
  • Definicja funkcji zadania: download_file to funkcja, która symuluje pobieranie pliku. Używa time.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 listy threads i uruchamiany metodą start().
  • Oczekiwanie na wątki: Pętla for iterująca przez listę threads używa metody join(), 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.

Scroll to Top