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.
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()
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.
- Uusia prosesseja luodaan
-
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 (
2ja1sekuntia) käyttäentime.sleep()-funktiota; - Koska ne toimivat rinnakkain, lyhyemmän viiveen prosessi valmistuu ensin, vaikka se käynnistettiin myöhemmin.
- Molemmat prosessit nukkuvat eri aikoja (
-
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme