Sådan implementeres multiprocessering bedst i Python?



Denne artikel introducerer dig til Multiprocessing i Python og ender med at give dig en programmatisk demonstration.

2019 har været et meget stort år for teknologisk udvikling over hele kloden. Fra at computerproducenter tilføjer flere kerner til deres CPU'er og processorer til lanceringen af ​​smartere chips i mobiltelefoner, er multiprocessing ikke længere en drøm. I dag er et af de mest fremtrædende programmeringssprog, der understøtter Multiprocessing . Takket være introduktionen af ​​parallel processorkraft i sin frigivelse kan kodere over hele verden nu problemfrit oprette koder, der skal udføres samtidigt og dermed deres driftstid med et betydeligt beløb.

Følgende punkter vil blive dækket i denne artikel,





hvordan man opretter en advarsel i javascript

Lad os begynde,

Multiprocessing i Python

Hvad er multiprocessing?

Multiprocessing kan simpelthen defineres som et systems evne til at understøtte mere end en operation i et givet tilfælde. Hvad dette betyder er, at applikationer i multiprocessing-systemer opdeles i små stykker og derefter kører uafhængigt af hinanden for at øge effektiviteten og reducere den samlede driftstid. Processoren i systemet tildeler hvert lille stykke en egen uafhængig tråd, hvilket gør det muligt at fungere som en enkeltstående enhed.



Behovet for multiprocessing

Forestil dig et computersystem, der kun har en kerne i sin processor. Hvis der tildeles flere opgaver til denne enkelt kerne, skal den hver opgave brydes imellem og derefter skifte til den næste. Dette vil ikke øge den tid, der er nødvendig for at fuldføre hver opgave, men vil også reducere systemets samlede effektivitet.

På den anden side kan en multiprocessing-computer have en processor, der igen har flere fungerende enheder inde i den, kaldet individuelle kerner, der har evnen til at køre flere forskellige opgaver uafhængigt på samme tid. Dette øger ikke kun systemets effektivitet, men reducerer også i det lange løb systemets driftstid med et betydeligt beløb.



Et multiprocessing-system i Python kan være af to typer.

Multi-processorsystem

Dette system har dybest set flere processorer til stede under emhætten, som hver kan udføre en opgave ad gangen og fungere som en uafhængig komponent.

Multi-core processorsystem

Dette system har flere kerner til stede i den samme processor, inden for hvilken kernen fungerer som en separat enhed og udfører opgaver uafhængigt, der er tildelt den.

Kode til multiprocessing i Python

Nu hvor du er vant til det grundlæggende koncept med multiprocessing, lad os undersøge, hvordan multiprocessing kan opnås i Python.

I Python indeholder tolken en meget enkel og intuitiv API, der tager en enkelt opgave, nedbryder den i flere komponenter og får dem behandlet uafhængigt.

Se på programmodulet nedenfor for at forstå dette begreb Multiprocessing i python bedre.

Eksempel 1

# import af multiprocessing-modulet import multiprocessing def print_cube (num): '' 'funktion til udskrivning af terning af givet antal' '' print ('Cube: {}'. format (num * num * num)) def print_square (num): '' 'funktion til at udskrive kvadrat med givet antal' '' udskriv ('Kvadrat: {}'. format (num * num)) hvis __navn__ == '__main__': # opretter processer p1 = multiprocessing.Process (target = print_square, args = (10,)) p2 = multiprocessing.Process (target = print_cube, args = (10,)) # startproces 1 p1.start () # startproces 2 p2.start () # vent indtil proces 1 er færdig p1 .join () # vent indtil proces 2 er færdig p2.join () # begge processer færdige udskrivning ('Udført!')

Produktion

Firkant: 100

Terning: 1000

Færdig!

Lad os nu analysere dette program for at forstå det bedre.

  1. Det første trin er at importere multiprocessing-modulet. For at gøre dette skal du bruge følgende syntaks: import multiprocessing.

  2. Nu hvor multiprocessing-modulet er importeret, lad os gå videre og oprette en proces. For at gøre dette opretter vi et objekt fra procesklassen og tildeler det følgende argumenter. Mål: den funktion, der skal udføres af denne proces og argumenterer: de argumenter, der skal sendes til målfunktionen.

Bemærk: En proceskonstruktør har evnen til at påtage sig flere mål såvel som argumenter, men i ovenstående eksempel har vi kun tildelt vores proces to mål og argumenter som vist nedenfor.

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

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

hvordan man kontrollerer for palindrom i java
  1. Nu hvor processen er oprettet, lad os skrive syntaksen for at starte den samme.

p1.start ()

p2.start ()

Når processen er startet, køres det aktuelle program og det allerede udførte program samtidigt. Hvis du i en bestemt situation skal stoppe udførelsen af ​​det aktuelle program og kun fokusere på udførelsen af ​​den allerede eksisterende, bruger vi sammenføjningsfunktionen som vist nedenfor.

p1.deltag ()

p2.tilslut ()

Når du har indtastet denne syntaks, venter tolken på, at programmet p1 er færdig med udførelsen, og fortsætter derefter til programmet p2.

For at forstå dette koncept yderligere, se et andet eksempel på Multiprocessing In Python nedenfor.

Eksempel 2

# importerer multiprocessing-modulet import multiprocessing import os def arbejdstager1 (): # udskrivningsproces-id-udskrivning ('ID for proces, der kører arbejder1: {}'. format (os.getpid ())) def-arbejder2 (): # udskrivningsproces-id ('ID for proceskørende arbejdstager2: {}'. Format (os.getpid ())) hvis __navn__ == '__main__': # udskrivning af hovedprogram proces-id udskrivning ('ID for hovedproces: {}'. Format (os .getpid ())) # oprettelse af processer p1 = multiprocessing.Process (target = worker1) p2 = multiprocessing.Process (target = worker2) # startprocesser p1.start () p2.start () # proces-id udskrives ('ID for proces p1: {} '. format (p1.pid)) print (' ID for proces p2: {} '. format (p2.pid)) # vent indtil processerne er færdige p1.join () p2.join () # begge processer færdig med udskrivning ('Begge processer afsluttede udførelse!') # kontroller om processer er i live udskriv ('Process p1 er i live: {}'. format (p1.is_alive ())) print ('Process p2 er i live: {} '.format (p2.is_alive ()))

Produktion

ID for hovedproces: 18938

ID for proceskørende arbejdstager1: 18939

ID for proceskørende arbejdstager2: 18940

ID for proces p1: 18939

ID for proces p2: 18940

Begge processer afsluttede udførelsen!

Process p1 er i live: Falsk

Process p2 er i live: Falsk

Bemærk i ovenstående program, at både proces p1 og p2 kører uafhængigt af deres individuelle minder. Så snart begge er færdig med udførelsen, afsluttes programmet.

Dette bringer os til slutningen af ​​denne artikel om multiprocessing i Python

For at få dybdegående viden om Python sammen med dens forskellige applikationer kan du til live online træning med support døgnet rundt og adgang til hele livet.

Har du et spørgsmål til os? Nævn dem i kommentarfeltet i artiklen, og vi vender tilbage til dig.