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.
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()
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.
- Nya processer skapas med klassen
-
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.
- Metoden
-
Parallell exekvering:
- Båda processerna sover olika länge (
2och1sekunder) med hjälp avtime.sleep(); - Eftersom de körs parallellt avslutas processen med kortast fördröjning först, även om den startades efter den andra.
- Båda processerna sover olika länge (
-
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.
- Metoden
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.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal