Werken met Processen
Veeg om het menu te tonen
Met de multiprocessing-module van Python kun je echte paralleliteit bereiken door afzonderlijke processen te starten, elk met een eigen Python-interpreter en geheugengebied. In tegenstelling tot threads, die geheugen delen en binnen hetzelfde proces draaien, zijn processen volledig geïsoleerd van elkaar. Deze isolatie voorkomt de beperking van de Global Interpreter Lock (GIL), waardoor meerdere CPU-kernen parallel kunnen werken aan CPU-intensieve taken. Na het bekijken van de bovenstaande video zou duidelijk moeten zijn dat parallelisme op basis van processen vooral nuttig is bij zware berekeningen of wanneer je meerdere kernen wilt benutten voor taken die anders door de GIL zouden worden beperkt. De multiprocessing-module biedt een vertrouwde API die lijkt op de threading-module, waardoor het eenvoudig is om afhankelijk van je behoeften te wisselen tussen threading en processing.
Gebruik deze klassen en functies om robuuste parallelle applicaties te bouwen, gegevensdeling te beheren en de uitvoering van processen in Python te coördineren.
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()
Dit codevoorbeeld laat zien hoe je met de multiprocessing-module van Python taken parallel kunt uitvoeren door aparte processen te creëren. Het voorbeeld gebruikt eenvoudige tijdvertragingen en print berichten om te tonen hoe processen onafhankelijk en gelijktijdig kunnen worden uitgevoerd.
Belangrijkste geïllustreerde concepten
-
Procescreatie:
- Nieuwe processen worden aangemaakt met de
multiprocessing.Process-klasse; - Elk proces krijgt een doelfunctie (
print_message) en argumenten die aan die functie worden doorgegeven.
- Nieuwe processen worden aangemaakt met de
-
Proces starten:
- De
start()-methode start elk proces, waardoor ze gelijktijdig kunnen draaien; - Na het starten voert elk proces zijn doelfunctie onafhankelijk van de andere uit.
- De
-
Parallelle uitvoering:
- Beide processen slapen voor verschillende duur (
2en1seconden) mettime.sleep(); - Omdat ze parallel draaien, is het proces met de kortste vertraging als eerste klaar, zelfs als het later is gestart.
- Beide processen slapen voor verschillende duur (
-
Proces samenvoegen:
- De
join()-methode zorgt ervoor dat het hoofdprogramma wacht tot beide processen klaar zijn voordat het verdergaat; - Zonder
join()zou het hoofdprogramma kunnen afsluiten voordat de processen zijn voltooid.
- De
Dit voorbeeld toont aan dat met multiprocessing taken gelijktijdig op meerdere CPU-kernen kunnen draaien, wat ideaal is voor CPU-intensieve operaties die profiteren van parallelle uitvoering.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.