Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Arbeide med prosesser | Multithreading vs. Multiprocessing
Python Strukturert Programmering

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.

123456789101112131415
import 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.
  • 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.
  • Parallell utførelse:

    • Begge prosessene sover i ulike tidsintervaller (2 og 1 sekunder) ved bruk av time.sleep();
    • Siden de kjører parallelt, vil prosessen med kortest forsinkelse fullføre først, selv om den ble startet etter den andre.
  • 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.

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.

question mark

Hvilket utsagn beskriver best forskjellen mellom tråder og prosesser i Python?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 3. Kapittel 4
some-alt