Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Arbejde med Tråde | Multithreading vs. Multiprocessing
Python Strukturel Programmering

Arbejde med Tråde

Stryg for at vise menuen

Pythons threading-modul giver en enkel, men kraftfuld måde at oprette og administrere tråde på, hvilket muliggør kørsel af flere operationer samtidigt inden for én enkelt proces. Tråde er letvægts eksekveringsenheder, der deler samme hukommelsesområde, hvilket gør dem velegnede til opgaver som I/O-operationer, venten på eksterne ressourcer eller opdatering af brugergrænseflader.

Livscyklussen for en tråd involverer typisk flere faser:

  • Oprettelse: et trådobjekt instantieres, men er endnu ikke startet;
  • Start: trådens start()-metode kaldes, hvilket flytter den til klar-til-kørsel-tilstand;
  • Kørsel: tråden udfører sin målfunktion;
  • Afslutning: tråden afslutter eksekveringen, enten ved at fuldføre sin opgave eller ved at støde på en ubehandlet undtagelse.

Håndtering af tråde kræver omhyggelig opmærksomhed på synkronisering, da tråde deler data og ressourcer. Uden korrekt synkronisering kan der opstå kapløbstilstande eller inkonsistent tilstand. threading-modulet tilbyder primitiver som Lock, RLock og Event til at koordinere trådes adgang til delte ressourcer.

Her er en tabel, der præsenterer funktioner, som hjælper dig med at oprette, administrere og synkronisere tråde effektivt, når du arbejder med samtidige opgaver i Python.

Følgende eksempel demonstrerer, hvordan du kan oprette og starte flere tråde ved hjælp af threading-modulet, hvilket gør det muligt for flere opgaver at køre samtidigt.

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.")

Du definerer en funktion, print_numbers, der udskriver en sekvens af tal sammen med trådens navn. Når du opretter hver tråd, videregiver du argumenter ved hjælp af args-parameteren – her modtager hver tråd et forskelligt navn ("A" eller "B"), så du nemt kan skelne deres output. Ved at kalde start()-metoden begynder begge tråde at køre og kører samtidigt. Kaldet til time.sleep(0.5) inde i løkken simulerer en forsinkelse i udførelsen, hvilket gør det muligt for trådene at flette deres output og gør det tydeligt, at begge tråde kører på samme tid. join()-metoden bruges derefter til at vente på, at begge tråde afslutter, før programmet fortsætter, hvilket sikrer, at hovedprogrammet ikke afsluttes for tidligt. Denne tilgang gør det muligt at køre opgaver parallelt, udnytte ventetider effektivt og muliggøre samtidig udførelse inden for én proces.

question mark

Hvilket af følgende udsagn om trådsynkronisering i Python er korrekt?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 2
some-alt