Kā vislabāk īstenot daudzapstrādi Python?



Šis raksts jūs iepazīstinās ar daudzapstrādi Python un procesā arī sniegs jums programmatisku demonstrāciju.

2019. gads ir bijis ļoti liels tehnoloģiskās attīstības gads visā pasaulē. Sākot ar datoru ražotājiem, kas savos procesoros un procesoros pievieno vairāk kodolu, līdz viedāku mikroshēmu ieviešanai mobilajos tālruņos, daudzapstrāde vairs nav sapnis. Mūsdienās viena no spilgtākajām programmēšanas valodām, kas atbalsta daudzprocesēšanu, ir . Pateicoties paralēlās apstrādes jaudas ieviešanai izlaidumā, kodētāji visā pasaulē tagad var nemanāmi izveidot vienlaicīgi izpildāmus kodus un tādējādi par ievērojamu to darbības laiku.

Šajā rakstā tiks apskatīti šādi norādījumi,





kā iemācīties vizuālo studiju

Sāksim,

Daudzapstrāde Python

Kas ir daudzapstrāde?

Vairāku procesu var vienkārši definēt kā sistēmas spēju atbalstīt vairāk nekā vienu darbību jebkurā konkrētā gadījumā. Tas nozīmē, ka lietojumi daudzapstrādes sistēmās tiek sadalīti mazos gabalos un pēc tam darbojas neatkarīgi viens no otra, lai palielinātu efektivitāti un samazinātu kopējo darbības laiku. Procesors sistēmā katram mazajam gabalam piešķir atsevišķu atsevišķu pavedienu, tādējādi ļaujot tam darboties kā atsevišķai vienībai.



Nepieciešamība pēc daudzapstrādes

Iedomājieties datorsistēmu, kuras procesorā ir tikai viens kodols. Ja šim vienam kodolam tiek piešķirti vairāki uzdevumi, tad katrs uzdevums ir sadalīts pa vidu un pēc tam pārslēgts uz nākamo. Tas nepalielinās laiku, kas nepieciešams katra uzdevuma izpildei, bet arī samazinās kopējo sistēmas efektivitāti.

No otras puses, daudzapstrādes datoram var būt viens procesors, kura iekšpusē savukārt ir vairākas funkcionējošas vienības, ko sauc par atsevišķiem kodoliem, kuriem ir iespēja vienlaikus veikt vairākus dažādus uzdevumus neatkarīgi. Tas ne tikai palielina sistēmas efektivitāti, bet arī ilgtermiņā samazina sistēmas darbības laiku par ievērojamu summu.



Daudzapstrādes sistēma Python var būt divu veidu.

Daudzprocesoru sistēma

Šīs sistēmas pamatā pārsegā atrodas vairāki procesori, no kuriem katrs var veikt vienu uzdevumu vienlaikus un darboties kā neatkarīgs komponents.

Daudzkodolu procesoru sistēma

Šai sistēmai ir vairāki kodoli, kas atrodas vienā un tajā pašā procesorā, un kurā kodols darbojas kā atsevišķa vienība un neatkarīgi veic uzdevumus, kas tai ir piešķirti.

Kods daudzapstrādei Python

Tagad, kad esat pieradis pie daudzapstrādes pamatjēdziena, ļaujiet mums izpētīt, kā daudzapstrādi var sasniegt Python.

Python tulks satur ļoti vienkāršu un intuitīvu API, kas veic vienu uzdevumu, sadala to vairākos komponentos un ļauj tos apstrādāt neatkarīgi.

Apskatiet zemāk esošo programmas moduli, lai labāk izprastu šo daudzprocesu apstrādes pitonā jēdzienu.

1. piemērs

# daudzapstrādes moduļa importēšana importēt daudzapstrādes def print_cube (num): '' 'funkcija, lai izdrukātu norādītā num' kubu '(' Cube: {} '. format (num * num * num)) def print_square (num): '' 'funkcija, lai drukātu norādītā num' '' drukas kvadrātu ('Kvadrāts: {}'. formāts (num * num)), ja __nosaukums = = '__main__': # procesu radīšana p1 = daudzapstrāde. args = (10,)) p2 = daudzapstrāde. Process (target = print_cube, args = (10,)) # sākuma process 1 p1.start () # sākuma process 2 p2.start () # pagaidiet, kamēr process 1 ir pabeigts p1 .join () # pagaidiet, kamēr 2. process ir pabeigts p2.join () # abi procesi ir pabeigti drukāt ('Gatavs!')

Rezultāts

Kvadrāts: 100

Kubs: 1000

Gatavs!

Tagad analizēsim šo programmu, lai to labāk izprastu.

  1. Pirmais solis ir daudzapstrādes moduļa importēšana. Lai to izdarītu, izmantojiet šādu sintaksi: importēt daudzapstrādi.

  2. Tagad, kad daudzapstrādes modulis ir importēts, virzīsimies uz priekšu un izveidosim procesu. Lai to izdarītu, mēs izveidojam procesa klases objektu un piešķiram šādus argumentus. Mērķis: funkcija, kas jāizpilda šim procesam, un argumentē: argumenti, kas jānodod mērķa funkcijai.

Piezīme: Procesa konstruktoram ir iespēja uzņemties vairākus mērķus, kā arī argumentus, taču iepriekš minētajā piemērā mēs savam procesam esam piešķīruši tikai divus mērķus un argumentus, kā parādīts zemāk.

p1 = daudzapstrāde. Process (target = print_square, args = (10,))

p2 = daudzapstrāde. Process (target = print_cube, args = (10,))

  1. Tagad, kad process ir izveidots, uzrakstīsim sintaksi tā paša sākšanai.

p1.start ()

p2.start ()

Kad process ir sākts, pašreizējā programma un jau izpildītā tiek palaista vienlaicīgi. Ja noteiktā situācijā jums jāpārtrauc pašreizējās programmas izpilde un jākoncentrējas tikai uz iepriekšējās programmas izpildi, mēs izmantojam savienošanas funkciju, kā parādīts zemāk.

p1.pievienoties ()

p2.pievienoties ()

Kad esat ievadījis šo sintaksi, tulks gaidīs, kamēr programma p1 pabeigs izpildi, un pēc tam pāriet uz programmu p2.

Lai saprastu šo jēdzienu tālāk, apskatiet vēl vienu piemēru daudzprocesorēšanai Python.

2. piemērs

# daudzapstrādes moduļa importēšana importa daudzapstrādes importēšana os def worker1 (): # drukāšanas procesa ID druka ('Procesā strādājoša darbinieka ID: {}'.. formāts (os.getpid ())) def darbinieks2 (): # drukas procesa id druka ('Procesā strādājoša darbinieka ID: {}'. Format (os.getpid ())), ja __nosaukums = = '__main__': # galvenās programmas procesa ID drukāšanas drukāšana ('galvenā procesa ID: {}'. Formāts (os .getpid ())) # procesu radīšana p1 = daudzapstrāde. Process (target = worker1) p2 = multiprocessing. Process (target = worker2) # process starting p1.start () p2.start () # process ID print ('ID of process p1: {} '. format (p1.pid)) print (' procesa p2 ID: {} '. format (p2.pid)) # pagaidiet, kamēr procesi ir pabeigti p1.join () p2.join () # abi procesi ir beiguši drukāt ('Abi procesi ir pabeigti!') # pārbaudiet, vai procesi ir dzīvi drukāt ('Process p1 ir dzīvs: {}'. format (p1.is_alive ())) print ('Process p2 ir dzīvs: {} '.formāts (p2.is_alive ()))

Rezultāts

Galvenā procesa ID: 18938

Procesā strādājoša darbinieka ID1: 18939

Procesā strādājoša darbinieka ID: 18940

Procesa p1: 18939 ID

Procesa p2 ID: 18940

Abi procesi ir pabeigti!

ir kotlins labaks par java

Process p1 ir dzīvs: nepatiesa

Process p2 ir dzīvs: nepatiesa

Ievērojiet iepriekšminētajā programmā, ka gan process p1, gan p2 darbojas neatkarīgi no viņu individuālajām atmiņām. Tiklīdz abi ir pabeiguši izpildi, programma tiek pārtraukta.

Tas mūs noved pie šī raksta par daudzprocesēšanu Python beigās

Lai iegūtu padziļinātas zināšanas par Python kopā ar tā dažādajām lietojumprogrammām, varat tiešsaistes apmācībai tiešsaistē ar diennakts atbalstu un piekļuvi mūža garumā.

Vai mums ir jautājums? Pieminiet tos raksta komentāru sadaļā, un mēs ar jums sazināsimies.