Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werken met Threads | Multithreading vs. Multiprocessing
Python Structureel Programmeren

Werken met Threads

Veeg om het menu te tonen

Het threading-module van Python biedt een eenvoudige maar krachtige manier om threads te creëren en te beheren, waardoor het mogelijk is om meerdere bewerkingen gelijktijdig binnen één enkel proces uit te voeren. Threads zijn lichte uitvoeringsunits die hetzelfde geheugen delen, waardoor ze geschikt zijn voor taken zoals I/O-bewerkingen, wachten op externe bronnen of het bijwerken van gebruikersinterfaces.

De levenscyclus van een thread omvat doorgaans verschillende fasen:

  • Creatie: een thread-object wordt aangemaakt maar nog niet gestart;
  • Starten: de start()-methode van de thread wordt aangeroepen, waardoor deze naar de gereed-om-te-starten status gaat;
  • Uitvoering: de thread voert zijn doel-functie uit;
  • Beëindiging: de thread voltooit de uitvoering, hetzij door de taak af te ronden, hetzij door een niet-afgehandelde uitzondering.

Het beheren van threads vereist zorgvuldige aandacht voor synchronisatie, omdat threads gegevens en bronnen delen. Zonder juiste synchronisatie kunnen racecondities of een inconsistente toestand optreden. Het threading-module biedt hulpmiddelen zoals Lock, RLock en Event om de toegang van threads tot gedeelde bronnen te coördineren.

Hieronder staat een tabel met functies die helpen bij het effectief creëren, beheren en synchroniseren van threads bij het werken met gelijktijdige taken in Python.

Het volgende voorbeeld laat zien hoe je meerdere threads kunt creëren en starten met behulp van het threading-module, zodat verschillende taken gelijktijdig kunnen worden uitgevoerd.

123456789101112131415161718192021
import threading import time def print_numbers(name): for i in range(1, 4): print(f"Thread {name}: {i}") time.sleep(0.5) # Create thread objects thread1 = threading.Thread(target=print_numbers, args=("A",)) thread2 = threading.Thread(target=print_numbers, args=("B",)) # Start the threads thread1.start() thread2.start() # Wait for both threads to finish thread1.join() thread2.join() print("Both threads have finished.")

Je definieert een functie, print_numbers, die een reeks getallen samen met de threadnaam afdrukt. Bij het aanmaken van elke thread geef je argumenten door via de parameter args – hier krijgt elke thread een andere naam ("A" of "B"), zodat je hun uitvoer eenvoudig kunt onderscheiden. Door de methode start() aan te roepen, beginnen beide threads met uitvoeren en lopen ze gelijktijdig. De aanroep time.sleep(0.5) binnen de lus simuleert een vertraging in de uitvoering, waardoor de uitvoer van de threads door elkaar kan lopen en het duidelijk wordt dat beide threads tegelijkertijd actief zijn. De methode join() wordt vervolgens gebruikt om te wachten tot beide threads klaar zijn voordat het programma verdergaat, zodat het hoofdprogramma niet voortijdig eindigt. Deze aanpak maakt het mogelijk om taken parallel uit te voeren, waardoor wachttijden efficiënt worden benut en gelijktijdige uitvoering binnen één proces mogelijk is.

question mark

Welke van de volgende uitspraken over thread-synchronisatie in Python is correct?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 2
some-alt