Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werken met Processen | Multithreading vs. Multiprocessing
Python Structureel Programmeren

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.

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()

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.
  • 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.
  • Parallelle uitvoering:

    • Beide processen slapen voor verschillende duur (2 en 1 seconden) met time.sleep();
    • Omdat ze parallel draaien, is het proces met de kortste vertraging als eerste klaar, zelfs als het later is gestart.
  • 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.

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.

question mark

Welke uitspraak beschrijft het verschil tussen threads en processen in Python het beste?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 4
some-alt