Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Working with Processes | Multithreading vs. Multiprocessing
Pythonin Rakenteellinen Ohjelmointi

Working with Processes

Pyyhkäise näyttääksesi valikon

Pythonin multiprocessing-moduuli mahdollistaa aidon rinnakkaisuuden luomalla erillisiä prosesseja, joilla jokaisella on oma Python-tulkki ja muistialue. Toisin kuin säikeet, jotka jakavat muistin ja toimivat samassa prosessissa, prosessit ovat täysin eristettyjä toisistaan. Tämä eristys poistaa Global Interpreter Lock (GIL) -rajoituksen, jolloin useat suorittimet voivat työskennellä rinnakkain prosessorisidonnaisissa tehtävissä. Videon katsomisen jälkeen ymmärrät, että prosesseihin perustuva rinnakkaisuus on erityisen hyödyllistä, kun tarvitaan raskasta laskentaa tai halutaan hyödyntää useita ytimiä tehtävissä, joita GIL muuten rajoittaisi. multiprocessing-moduuli tarjoaa tutun rajapinnan, joka muistuttaa threading-moduulia, joten siirtyminen säikeiden ja prosessien välillä on helppoa tarpeen mukaan.

Näiden luokkien ja funktioiden avulla voidaan rakentaa vankkoja rinnakkaissovelluksia, hallita tiedon jakamista ja koordinoida prosessien suoritusta Pythonissa.

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

Tämä koodiesimerkki havainnollistaa, kuinka Pythonin multiprocessing-moduulia käytetään rinnakkaisten tehtävien suorittamiseen luomalla erillisiä prosesseja. Esimerkissä käytetään yksinkertaisia viiveitä ja tulostetaan viestejä, jotta nähdään, miten prosessit voivat toimia itsenäisesti ja samanaikaisesti.

Keskeiset havainnot

  • Prosessin luominen:

    • Uusia prosesseja luodaan multiprocessing.Process-luokan avulla;
    • Jokaiselle prosessille annetaan kohdefunktio (print_message) ja sille välitettävät argumentit.
  • Prosessin käynnistäminen:

    • start()-metodi käynnistää jokaisen prosessin, jolloin ne voivat toimia samanaikaisesti;
    • Kun prosessi on käynnistetty, se suorittaa kohdefunktionsa itsenäisesti muihin nähden.
  • Rinnakkainen suoritus:

    • Molemmat prosessit nukkuvat eri aikoja (2 ja 1 sekuntia) käyttäen time.sleep()-funktiota;
    • Koska ne toimivat rinnakkain, lyhyemmän viiveen prosessi valmistuu ensin, vaikka se käynnistettiin myöhemmin.
  • Prosessin yhdistäminen:

    • join()-metodi varmistaa, että pääohjelma odottaa molempien prosessien valmistumista ennen jatkamista;
    • Ilman join()-kutsua pääohjelma voisi päättyä ennen prosessien valmistumista.

Tämä esimerkki osoittaa, että multiprocessingin avulla tehtävät voivat toimia samanaikaisesti usealla suorittimella, mikä tekee siitä ihanteellisen prosessorisidonnaisiin tehtäviin, jotka hyötyvät rinnakkaisesta suorituksesta.

question mark

Mikä väite kuvaa parhaiten säikeiden ja prosessien eroa Pythonissa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 3. Luku 4
some-alt