Arbejde med processer
Stryg for at vise menuen
Pythons multiprocessing-modul muliggør ægte parallelisme ved at oprette separate processer, hver med sin egen Python-fortolker og hukommelsesområde. I modsætning til tråde, som deler hukommelse og kører i samme proces, er processer fuldstændig isolerede fra hinanden. Denne isolation undgår begrænsningen fra Global Interpreter Lock (GIL), hvilket gør det muligt for flere CPU-kerner at arbejde parallelt på CPU-tunge opgaver. Efter at have set videoen ovenfor, bør du forstå, at procesbaseret parallelisme især er nyttig, når der skal udføres tunge beregninger eller udnyttes flere kerner til opgaver, der ellers ville blive begrænset af GIL. multiprocessing-modulet tilbyder et velkendt API, der ligner threading-modulet, hvilket gør det nemt at skifte mellem tråde og processer afhængigt af behov.
Brug disse klasser og funktioner til at opbygge robuste parallelle applikationer, håndtere datadeling og koordinere procesudførelse i Python.
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
Dette kodeeksempel demonstrerer, hvordan man bruger Pythons multiprocessing-modul til at køre opgaver parallelt ved at oprette separate processer. Eksemplet anvender simple tidsforsinkelser og udskriver beskeder for at vise, hvordan processer kan køre uafhængigt og samtidigt.
Centrale begreber illustreret
-
Procesoprettelse:
- Nye processer oprettes med
multiprocessing.Process-klassen; - Hver proces får en målfunktion (
print_message) og argumenter, der skal videregives til funktionen.
- Nye processer oprettes med
-
Processtart:
- Metoden
start()starter hver proces, så de kan køre samtidigt; - Når de er startet, kører hver proces sin målfunktion uafhængigt af de andre.
- Metoden
-
Parallel udførelse:
- Begge processer sover i forskellige tidsrum (
2og1sekunder) ved hjælp aftime.sleep(); - Da de kører parallelt, afslutter processen med den korteste forsinkelse først, selvom den blev startet efter den anden.
- Begge processer sover i forskellige tidsrum (
-
Proces-sammenkædning:
- Metoden
join()sikrer, at hovedprogrammet venter på, at begge processer er færdige, før det fortsætter; - Uden
join()kunne hovedprogrammet afslutte, før processerne er færdige.
- Metoden
Dette eksempel viser, at med multiprocessing kan opgaver køre samtidigt på flere CPU-kerner, hvilket gør det ideelt til CPU-tunge operationer, der drager fordel af parallel udførelse.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat