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

Arbeta med processer

Svep för att visa menyn

Pythons multiprocessing-modul möjliggör äkta parallellism genom att starta separata processer, var och en med sin egen Python-tolk och minnesutrymme. Till skillnad från trådar, som delar minne och körs i samma process, är processer helt isolerade från varandra. Denna isolering undviker begränsningen med Global Interpreter Lock (GIL), vilket gör det möjligt för flera CPU-kärnor att arbeta parallellt med CPU-intensiva uppgifter. Efter att ha sett videon ovan bör du förstå att processbaserad parallellism är särskilt användbar när du behöver utföra tunga beräkningar eller dra nytta av flera kärnor för uppgifter som annars skulle begränsas av GIL. multiprocessing-modulen tillhandahåller ett bekant API liknande threading-modulen, vilket gör det enkelt att växla mellan trådar och processer beroende på behov.

Använd dessa klasser och funktioner för att bygga robusta parallella applikationer, hantera datadelning och koordinera processutförande 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()

Detta kodexempel visar hur man använder Pythons multiprocessing-modul för att köra uppgifter parallellt genom att skapa separata processer. Exemplet använder enkla tidsfördröjningar och skriver ut meddelanden för att visa hur processer kan köras oberoende och samtidigt.

Viktiga koncept som illustreras

  • Processkapande:

    • Nya processer skapas med klassen multiprocessing.Process;
    • Varje process får en målfunktion (print_message) och argument som skickas till den funktionen.
  • Starta processer:

    • Metoden start() startar varje process, vilket gör att de kan köras samtidigt;
    • När de har startats kör varje process sin målfunktion oberoende av de andra.
  • Parallell exekvering:

    • Båda processerna sover olika länge (2 och 1 sekunder) med hjälp av time.sleep();
    • Eftersom de körs parallellt avslutas processen med kortast fördröjning först, även om den startades efter den andra.
  • Processanslutning:

    • Metoden join() säkerställer att huvudprogrammet väntar på att båda processerna ska avslutas innan det går vidare;
    • Utan join() kan huvudprogrammet avslutas innan processerna är klara.

Detta exempel visar att med multiprocessing kan uppgifter köras samtidigt på flera CPU-kärnor, vilket gör det idealiskt för CPU-intensiva operationer som gynnas av parallell exekvering.

question mark

Vilket påstående beskriver bäst skillnaden mellan trådar och processer i Python?

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 4

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 4
some-alt