2019. je bila vrlo velika godina za tehnološki razvoj širom svijeta. Počevši od proizvođača računala koji dodaju više jezgri svojim procesorima i procesorima do lansiranja pametnijih čipova u mobitele, višeprocesiranje više nije san. Danas je jedan od najistaknutijih programskih jezika koji podržava višeprocesiranje . Zahvaljujući uvođenju paralelne procesorske snage u svoje izdanje, koderi širom svijeta sada mogu neprimjetno stvoriti kodove koji se izvršavaju istovremeno, a time i njihovo vrijeme rada za značajan iznos.
U ovom će članku biti obrađeni sljedeći smjerovi,
što je aplet u javi s primjerom
Višeprocesiranje u Pythonu
Što je višeprocesiranje?
Višeprocesiranje se jednostavno može definirati kao sposobnost sustava da podrži više od jedne operacije u bilo kojoj datoj instanci. To znači da se aplikacije u višeprocesorskim sustavima raščlanjuju na male dijelove, a zatim pokreću neovisno jedna o drugoj kako bi se povećala učinkovitost i smanjilo ukupno vrijeme rada. Procesor u sustavu dodjeljuje svakom malom komadu zasebnu vlastitu nit, omogućavajući mu tako da funkcionira kao samostalni entitet.
Potreba za višeprocesiranjem
Zamislite računalni sustav koji u procesoru ima samo jednu jezgru. Ako je ovoj jezgri dodijeljeno više zadataka, tada je svaki zadatak prekinut, a zatim prebačen na sljedeću. To neće povećati količinu vremena potrebnog za izvršavanje svakog zadatka, ali će također smanjiti ukupnu učinkovitost sustava.
S druge strane, višeprocesorsko računalo može imati jedan procesor koji zauzvrat ima više funkcionalnih jedinica unutar sebe, koje se nazivaju pojedinačne jezgre koje imaju mogućnost istodobno pokretati nekoliko različitih zadataka. To ne samo da povećava učinkovitost sustava već i dugoročno smanjuje vrijeme rada sustava za značajan iznos.
Višeprocesorski sustav u Pythonu može biti dvije vrste.
Višeprocesorski sustav
Ovaj sustav u osnovi ima više procesora koji su prisutni ispod haube, od kojih svaki može izvršavati jedan po jedan zadatak i funkcionirati kao neovisna komponenta.
Višejezgreni procesorski sustav
Ovaj sustav ima više jezgri prisutnih u istom procesoru, unutar kojih jezgra funkcionira kao zasebna jedinica i izvršava zadatke koji su joj dodijeljeni.
Kôd za višeprocesiranje u Pythonu
Sad kad ste se navikli na osnovni koncept višeprocesiranja, istražimo kako se multiprocesiranje može postići u Pythonu.
U Pythonu tumač sadrži vrlo jednostavan i intuitivan API koji uzima jedan zadatak, raščlanjuje ga na više komponenata i obrađuje neovisno.
Pogledajte programski modul u nastavku da biste bolje razumjeli ovaj koncept višeprocesiranja u pythonu.
Primjer 1
# uvoz multiprocesorskog modula import multiprocessing def print_cube (num): '' 'funkcija za ispis kocke datog broja' '' print ('Cube: {}'. format (num * num * num)) def print_square (num): '' 'funkcija za ispis kvadrata zadanog broja' '' ispis ('Kvadrat: {}'. format (num * num)) ako je __name__ == '__main__': # stvaranje procesa p1 = višeprocesiranje.Proces (target = print_square, args = (10,)) p2 = multiprocessing.Process (target = print_cube, args = (10,)) # pokretanje postupka 1 p1.start () # pokretanje postupka 2 p2.start () # pričekajte dok proces 1 ne završi p1 .join () # pričekajte dok se proces 2 ne završi p2.join () # oba procesa završe ispis ('Gotovo!')
Izlaz
Kvadrat: 100
Kocka: 1000
Gotovo!
Sada ćemo analizirati ovaj program kako bismo ga bolje razumjeli.
Prvi korak je uvoz multiprocesorskog modula. Da biste to učinili, upotrijebite sljedeću sintaksu: import multiprocessing.
Sad kad je uvezen modul za višeprocesorsku obradu, krenimo dalje i stvorimo proces. Da bismo to učinili, kreiramo objekt klase Process i dodijeljujemo mu sljedeće argumente. Cilj: funkcija koju ovaj postupak treba izvršiti i argumenti: argumenti koje treba proslijediti ciljnoj funkciji.
Napomena: Konstruktor procesa ima mogućnost preuzimanja više ciljeva, kao i argumenata, ali u gornjem primjeru našem procesu dodijelili smo samo dva cilja i argumente kao što je prikazano u nastavku.
p1 = multiprocessing.Process (target = print_square, args = (10,))
p2 = multiprocessing.Process (target = print_cube, args = (10,))
Sad kad je proces stvoren, napišimo sintaksu za njegovo pokretanje.
java što je token
p1.start ()
p2.start ()
Jednom kada je postupak pokrenut, trenutni program i onaj koji se već izvršava pokreću se istovremeno. Ako u određenoj situaciji trebate zaustaviti izvršavanje trenutnog programa i usredotočiti se samo na izvršavanje prethodno postojećeg, koristimo funkciju pridruživanja kako je prikazano u nastavku.
p1.join ()
p2.join ()
Jednom kada unesete ovu sintaksu, tumač će pričekati da program p1 završi izvršenje, a zatim prijeći na program p2.
Da biste dalje razumjeli ovaj koncept, pogledajte sljedeći primjer za višeprocesiranje u Pythonu.
Primjer 2
# uvoz multiprocesorskog modula import multiprocessing import os def worker1 (): # print process id print ('ID procesa koji se izvodi worker1: {}'. format (os.getpid ())) def worker2 (): # print print id print ('ID procesa koji se izvodi radnik2: {}'. Format (os.getpid ())) if __name__ == '__main__': # ispis id procesa glavnog programa: ('ID glavnog procesa: {}'. Format (os .getpid ())) # stvaranje procesa p1 = višeprocesiranje.Proces (cilj = radnik1) p2 = višeprocesiranje.Proces (cilj = radnik2) # pokretanje procesa p1.start () p2.start () # ID procesa ispis ('ID of proces p1: {} '. format (p1.pid)) print (' ID procesa p2: {} '. format (p2.pid)) # pričekajte dok se procesi ne završe p1.join () p2.join () # oba procesa su dovršena ispis ('Oba procesa su dovršena!') # provjeri jesu li procesi živi print ('Proces p1 je živ: {}'. format (p1.is_alive ())) print ('Proces p2 je živ: {} '.format (p2.is_alive ()))
Izlaz
ID glavnog postupka: 18938
ID radnika koji radi u procesu1: 18939
ID radnika koji radi u procesu2: 18940
ID postupka p1: 18939
ID postupka p2: 18940
Oba su procesa završila izvršenje!
Proces p1 je živ: Netačno
Proces p2 je živ: Netačno
Primijetite u gornjem programu da se i procesi p1 i p2 izvode neovisno o svojim individualnim sjećanjima. Čim oba završe s izvršavanjem, program se prekida.
To nas dovodi do kraja ovog članka o Multiprocesiranju u Pythonu
Možete dobiti detaljno znanje o Pythonu, zajedno s raznim aplikacijama za mrežni trening uživo s podrškom 24/7 i doživotnim pristupom.
Imate pitanje za nas? Spomenite ih u odjeljku za komentare članka i javit ćemo vam se.