Arbeide med prosesser
Sveip for å vise menyen
Pythons multiprocessing-modul gjør det mulig å oppnå ekte parallellisme ved å starte separate prosesser, hver med sin egen Python-tolk og minneområde. I motsetning til tråder, som deler minne og kjører i samme prosess, er prosesser fullstendig isolert fra hverandre. Denne isolasjonen unngår begrensningen med Global Interpreter Lock (GIL), slik at flere CPU-kjerner kan arbeide parallelt med CPU-krevende oppgaver. Etter å ha sett videoen ovenfor, bør du forstå at prosessbasert parallellisme er spesielt nyttig når du må utføre tunge beregninger eller utnytte flere kjerner for oppgaver som ellers ville blitt flaskehalser på grunn av GIL. multiprocessing-modulen tilbyr et kjent API som ligner på threading-modulen, noe som gjør det enkelt å bytte mellom tråder og prosesser avhengig av behov.
Bruk disse klassene og funksjonene for å bygge robuste parallelle applikasjoner, håndtere datadeling og koordinere prosessutfø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()
Denne kodeeksempelet viser hvordan man bruker Pythons multiprocessing-modul for å kjøre oppgaver parallelt ved å opprette separate prosesser. Eksempelet bruker enkle tidsforsinkelser og skriver ut meldinger for å vise hvordan prosesser kan kjøre uavhengig og samtidig.
Viktige konsepter illustrert
-
Prosessopprettelse:
- Nye prosesser opprettes med
multiprocessing.Process-klassen; - Hver prosess får en målfunksjon (
print_message) og argumenter som sendes til denne funksjonen.
- Nye prosesser opprettes med
-
Start av prosess:
- Metoden
start()starter hver prosess, slik at de kan kjøre samtidig; - Når de er startet, kjører hver prosess sin målfunksjon uavhengig av de andre.
- Metoden
-
Parallell utførelse:
- Begge prosessene sover i ulike tidsintervaller (
2og1sekunder) ved bruk avtime.sleep(); - Siden de kjører parallelt, vil prosessen med kortest forsinkelse fullføre først, selv om den ble startet etter den andre.
- Begge prosessene sover i ulike tidsintervaller (
-
Prosess-sammenkobling:
- Metoden
join()sørger for at hovedprogrammet venter på at begge prosessene skal fullføre før det går videre; - Uten
join()kan hovedprogrammet avsluttes før prosessene er ferdige.
- Metoden
Dette eksempelet viser at med multiprocessing kan oppgaver kjøres samtidig på flere CPU-kjerner, noe som gjør det ideelt for CPU-krevende operasjoner som drar nytte av parallell utførelse.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår