Kako najbolje implementirati večprocesorsko obdelavo v Pythonu?



Ta članek vam bo predstavil večprocesorsko obdelavo v Pythonu in vam na koncu tudi dal programsko predstavitev.

Leto 2019 je bilo zelo veliko za tehnološki razvoj po vsem svetu. Začenši s tem, da proizvajalci računalnikov dodajo več jeder svojim procesorjem in procesorjem do lansiranja pametnejših čipov v mobilne telefone, večprocesorska obdelava ni več sanje. Danes je eden najvidnejših programskih jezikov, ki podpira večprocesorsko obdelavo . Zahvaljujoč uvedbi vzporedne procesorske moči v svoji izdaji lahko kodirniki po vsem svetu zdaj nemoteno ustvarjajo kode, ki se izvajajo hkrati, in s tem njihov čas delovanja za precejšnjo količino.

V tem članku bodo zajeti naslednji napotki:





ustvari naključni niz java

Začnimo,

Večprocesorska obdelava v Pythonu

Kaj je večprocesorska obdelava?

Večprocesorsko obdelavo lahko preprosto definiramo kot zmožnost sistema, da podpira več kot eno operacijo v katerem koli primeru. To pomeni, da se aplikacije v večprocesorskih sistemih razdelijo na majhne koščke in se nato izvajajo neodvisno drug od drugega, da se poveča učinkovitost in skrajša celotni čas delovanja. Procesor v sistemu dodeli vsakemu majhnemu kosu samostojno nit, s čimer mu omogoča, da deluje kot samostojna entiteta.



Potreba po večprocesorski obdelavi

Predstavljajte si računalniški sistem, ki ima v jedru samo eno jedro. Če je temu enemu jedru dodeljenih več nalog, potem je vsako nalogo razdelilo in nato preklopilo na naslednje. To ne bo povečalo časa, potrebnega za dokončanje posamezne naloge, ampak tudi zmanjšalo splošno učinkovitost sistema.

Po drugi strani pa ima večprocesorski računalnik lahko en procesor, ki ima v sebi več delujočih enot, imenovanih posamezna jedra, ki lahko hkrati izvajajo več različnih nalog. To ne samo poveča učinkovitost sistema, ampak tudi dolgoročno bistveno zmanjša čas delovanja sistema.



Sistem večprocesorske obdelave v Pythonu je lahko dveh vrst.

Večprocesorski sistem

Ta sistem ima v osnovi več procesorjev, ki lahko naenkrat opravljajo eno nalogo in delujejo kot neodvisna komponenta.

Večjedrni procesorski sistem

Ta sistem ima v istem procesorju več jeder, znotraj katerih jedro deluje kot ločena enota in neodvisno opravlja naloge, ki so mu dodeljene.

Koda za večprocesorsko obdelavo v Pythonu

Zdaj, ko ste navajeni osnovnega koncepta večprocesorske obdelave, raziščimo, kako lahko večprocesorsko obdelavo dosežemo v Pythonu.

V Pythonu tolmač vsebuje zelo preprost in intuitiven API, ki sprejme eno nalogo, jo razdeli na več komponent in jih obdela neodvisno.

Oglejte si spodnji programski modul, da boste bolje razumeli ta koncept večprocesorske obdelave v pythonu.

Primer 1

# uvoz večprocesorskega modula import multiprocessing def print_cube (num): '' 'funkcija za tiskanje kocke danega števila' '' print ('Cube: {}'. format (num * num * num)) def print_square (num): '' 'funkcija za tiskanje kvadrata danega števila' '' print ('Square: {}'. format (num * num)) if __name__ == '__main__': # ustvarjanje procesov p1 = multiprocessing.Process (target = print_square, args = (10,)) p2 = multiprocessing.Process (target = print_cube, args = (10,)) # zagon procesa 1 p1.start () # zagon procesa 2 p2.start () # počakajte, da se postopek 1 konča p1 .join () # počakajte, da se postopek 2 konča p2.join () # oba postopka dokončata tiskanje ('Končano!')

Izhod

Kvadrat: 100

Kocka: 1000

Končano!

Zdaj pa analizirajmo ta program, da ga bomo bolje razumeli.

  1. Prvi korak je uvoz večprocesorskega modula. Če želite to narediti, uporabite naslednjo skladnjo: uvozi večprocesorsko obdelavo.

  2. Zdaj, ko je bil večprocesorski modul uvožen, pojdimo naprej in ustvarimo postopek. Da bi to naredili, ustvarimo objekt razreda Process in mu dodelimo naslednje argumente. Cilj: funkcija, ki jo mora ta postopek izvesti, in argumenti: argumenti, ki jih je treba posredovati ciljni funkciji.

Opomba: Konstruktor procesov lahko zajema več ciljev kot tudi argumente, vendar smo v zgornjem primeru našemu procesu dodelili samo dva cilja in argumente, kot je prikazano spodaj.

p1 = multiprocessing.Process (target = print_square, args = (10,))

p2 = multiprocessing.Process (target = print_cube, args = (10,))

  1. Zdaj, ko je bil postopek ustvarjen, zapišimo sintakso za začetek istega.

p1.start ()

p2.start ()

Ko se postopek začne, se hkrati izvajata trenutni in že izvajani program. Če morate v določeni situaciji ustaviti izvajanje trenutnega programa in se osredotočiti le na izvajanje že obstoječega, uporabimo funkcijo združevanja, kot je prikazano spodaj.

p1.join ()

p2.join ()

Ko vnesete to sintakso, bo tolmač počakal, da se program p1 konča z izvajanjem, in nato prešel na program p2.

Za nadaljnje razumevanje tega koncepta si oglejte še en primer za večprocesorsko obdelavo v Pythonu spodaj.

2. primer

# uvoz večprocesorskega modula import multiprocessing import os def worker1 (): # print process id print ('ID procesa, ki se izvaja worker1: {}'. format (os.getpid ())) def worker2 (): # print print id print ('ID procesorja, ki se izvaja2: {}'. Format (os.getpid ())), če __name__ == '__main__': # tiskanje ID procesa glavnega programa print ('ID glavnega procesa: {}'. Format (os .getpid ())) # ustvarjanje procesov p1 = večprocesorska obdelava.Proces (target = worker1) p2 = multiprocessing.Process (target = worker2) # zagon procesov p1.start () p2.start () # ID procesov se natisne ('ID proces p1: {} '. format (p1.pid)) print (' ID procesa p2: {} '. format (p2.pid)) # počakajte, da se procesi končajo p1.join () p2.join () # oba procesa sta končala tiskanje ('Oba procesa sta zaključena!') # preveri, ali sta procesa živa print ('Proces p1 je živ: {}'. format (p1.is_alive ())) print ('Proces p2 je živ: {} '.format (p2.is_alive ()))

Izhod

kaj je anonimni tečaj v javi

ID glavnega postopka: 18938

ID procesorja, ki teče1: 18939

ID procesorja, ki teče2: 18940

ID postopka p1: 18939

ID postopka p2: 18940

Oba procesa sta končala izvedbo!

Proces p1 je živ: napačno

Proces p2 je živ: napačno

V zgornjem programu opazite, da se postopek p1 in p2 izvajata neodvisno od svojih posameznih spominov. Takoj, ko oba končata izvajanje, se program zaključi.

S tem smo prišli do konca tega članka o večprocesorski obdelavi v Pythonu

Če želite pridobiti poglobljeno znanje o Pythonu skupaj z različnimi aplikacijami, lahko za spletno usposabljanje v živo s podporo 24 ur na dan in 7 dni v tednu.

Imate vprašanje za nas? Omenite jih v oddelku za komentarje v članku in odgovorili vam bomo.