Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Arbete med trådar | Multithreading vs. Multiprocessing
Python Strukturell Programmering

Arbete med trådar

Svep för att visa menyn

Pythons threading-modul erbjuder ett enkelt men kraftfullt sätt att skapa och hantera trådar, vilket möjliggör att flera operationer kan köras samtidigt inom en enda process. Trådar är lättviktiga exekveringsenheter som delar samma minnesutrymme, vilket gör dem lämpliga för uppgifter som I/O-operationer, väntan på externa resurser eller uppdatering av användargränssnitt.

En tråds livscykel omfattar vanligtvis flera steg:

  • Skapande: ett trådobjekt instansieras men har ännu inte startats;
  • Start: trådens start()-metod anropas, vilket flyttar den till redo-att-köras-läget;
  • Körning: tråden exekverar sin mål-funktion;
  • Terminering: tråden avslutar exekveringen, antingen genom att slutföra sin uppgift eller genom att stöta på ett ohanterat undantag.

Att hantera trådar kräver noggrann uppmärksamhet på synkronisering, eftersom trådar delar data och resurser. Utan korrekt synkronisering kan du stöta på kapplöpningssituationer eller inkonsekvent tillstånd. threading-modulen erbjuder primitiv som Lock, RLock och Event för att hjälpa till att samordna tråders åtkomst till delade resurser.

Här är en tabell som presenterar funktioner som hjälper dig att skapa, hantera och synkronisera trådar effektivt när du arbetar med samtidiga uppgifter i Python.

Följande exempel visar hur du kan skapa och starta flera trådar med hjälp av threading-modulen, vilket möjliggör att flera uppgifter kan köras 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 definierar en funktion, print_numbers, som skriver ut en sekvens av siffror tillsammans med trådens namn. När du skapar varje tråd skickar du argument med hjälp av parametern args – här får varje tråd ett unikt namn ("A" eller "B") så att du enkelt kan särskilja deras utskrifter. Genom att anropa metoden start() påbörjar båda trådarna sin exekvering och körs samtidigt. Anropet time.sleep(0.5) inuti loopen simulerar en fördröjning i exekveringen, vilket gör att trådarnas utskrifter kan blandas och tydligt visar att båda trådarna körs parallellt. Metoden join() används sedan för att vänta på att båda trådarna ska avslutas innan programmet går vidare, vilket säkerställer att huvudprogrammet inte avslutas i förtid. Detta tillvägagångssätt möjliggör parallell körning av uppgifter, effektivt utnyttjande av väntetider och samtidiga exekveringar inom en och samma process.

question mark

Vilket av följande påståenden om trådsynkronisering i Python är korrekt?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 3. Kapitel 2
some-alt