Python multiprosesseringsbasseng

Python multiprosesseringsbasseng
Distribusjonen av to eller enda mer sentrale prosesseringsenheter i hele et prosessorsystem er kjent som multiprosessering. Systemets funksjonalitet kan forbedres betydelig ved multiprosessering. Python bruker bare en sentral prosesseringsenhet på grunn av GIL. I motsetning til C -språk eller Java -språk, som umiddelbart bruker multiprosessering. Det er en plugg som bare gjør det mulig for en prosess å kjøre samtidig. Multiprosesseringspakken i Python kan derfor ta opp dette problemet. Det er to moduser i denne enheten som inkluderer prosess og bassenget. Disse kan hjelpe oss med å utføre en spesifikk del av koden samtidig.

Syntaks av bassenget () -funksjonen:

Vi vil eksplisitt konstruere prosedyrer i prosessklassen. Selv om bassengklassen ser ut til å være mer nyttig fordi vi kan takle den dynamisk. For å konstruere et bassengobjekt, bruk syntaks:

Hver parameter er valgfri. 'Initargs' er den tredje parameteren som er overført til metoden, den andre 'initializer' -parameteren vil også bli gitt, som brukes til initialisering. 'MaxTaskSperChild' betegner det totale antallet operasjoner som hver barneprosess er gitt. Prosessen vil bli oppdatert med en ny arbeiderprosedyre etter å ha fullført operasjonene.

La oss diskutere ytterligere multiprosesseringsbasseng:

Eksempel nr. 1:
La oss se på illustrasjonen nedenfor, som beregner kvadratet på heltallet og sover koden i ett sekund.

Importer tid
Fra multiprosesseringsimportpool
def square (a):
print (f "Her begynner prosessen: a")
firkant = a * a
print (f "Square a: square")
tid.søvn (1)
print (f "Ehere prosessen avsluttes: a")
if __name__ == "__main__":
start_t = tid.tid()
basseng = basseng ()
basseng.Kart (firkant, rekkevidde (0, 9))
basseng.Lukk()
end_t = tid.tid()
Print (F "Den totale tiden som er tatt er end_t-start_t sekunder")

I begynnelsen av koden må vi importere tidsmodulen og bassengmodulen. Bassengbiblioteket vil bli integrert fra multiprosessering. Vi definerer funksjonen Square (). Deretter bruker vi Print () -metoden for å vise meldingen 'Her begynner prosessen'. Her får vi torget til tallet ved å multiplisere antallet med hverandre. Nok en gang kaller vi print () -funksjonen for å vise kvadratet til det definerte nummeret. Vi definerer funksjonssøvnen () for å angi tidsrammen for koden.

Nå skriver utskriftsoppgaven ut linjen som viser at prosessen er avsluttet. La oss starte med kroppen til hovedfunksjonen. Vi påkaller tidens tid () metoden for modulen. Vi konstruerer et bassengklasseartikkel. Metoden som vi ønsker å gjenskape og en iterable er gitt som parametere til MAP () -metoden.

I tillegg aksepterer den en ekstra 'biter-parameter som deler de iterable i like store segmenter og mottar denne som en distinkt operasjon. Parameteren til MAP () -metoden brukes som rekkevidde. For å nekte nye operasjoner, bruk bassenget.Lukk () Metode.

Eksempel nr. 2:
I dette tilfellet vil vi angi datarammen for koden i 2 sekunder ved å bruke Sleep () -metoden.

Importer tid
Fra multiprosesseringsimportpool
def square (a):
Print (F "Prosessen begynner nå A")
firkant = a * a
tid.søvn (2)
Print (F "Prosessen slutter nå A")
Returner Square
if __name__ == "__main__":
basseng = basseng ()
x = basseng.Kart (firkant, rekkevidde (0, 7))
trykk (x)

Tidspakken og bassengpakken må importeres ved start av programmet. Multiprosessering vil bli innlemmet i bassengbiblioteket. Metodens kvadrat () er definert. Meldingen “Prosessen begynner nå” vises deretter ved å bruke PRINT () -funksjonen. Ved å multiplisere verdiene sammen, kan vi få kvadratet på tallet i dette scenariet.

For å stille inn kodenes tid, påkaller vi Sleep () -metoden. Videre viser utskriftskommandoen en linje som indikerer at prosessen er avsluttet. Innenfor hovedfunksjonen vil vi påkalle Pool () -metoden. Funksjonskartet () har blitt brukt i neste linje. Denne funksjonen inneholder to parametere. Det første argumentet viser torget til tallet. Og den andre parameteren bruker Range () -metoden.

Vi definerer de nedre og høyere grensene innen rekkevidden () -funksjonen. Til slutt har vi ringt Print () for å vise resultatet.

Eksempel nr. 3:
Utrolig lik bassenget.Kart () Funksjon er bassenget.IMAP (). Skillet her er at utfallet til hvert element blir gitt så umiddelbart som det blir behandlet, i stedet for å måtte vente på at alle varene skal fullføres. I tillegg blir iterable omdannet til et sett av kart () -funksjonen. IMAP () -teknikken gjør det derfor ikke.

Importer tid
Fra multiprosesseringsimportpool
def square (x1):
Print (F "Sthe -prosessen har startet x1")
firkant = x1 * x1
tid.søvn (9)
trykk (f "Prosessen er avsluttet x1")
Returner Square
if __name__ == "__main__":
basseng = basseng ()
x2 = basseng.IMAP (firkant, rekkevidde (0, 4))
for j i x2:
Print (F "Resultatet er her J")

Først må vi inkludere tids- og bassengrammen. Vi tar bassengbiblioteket fra multiprosesseringspakken. Vi kaller firkantet () -funksjonen. Denne funksjonen inneholder det nødvendige antallet som argument. For å vise meldingen som indikerer at prosessen har startet, har vi ringt utskrift () -funksjonen. Ved å multiplisere verdiene sammen i dette tilfellet, kan vi få kvadratet med det spesifiserte tallet. For å bestemme kodens tid, påkaller vi metodens søvn (). Uttalelsen som indikerer at prosessen er avsluttet er skrevet ut av utskriftsfunksjonen. Torget til det spesifiserte heltallet blir deretter returnert av funksjonen.

La oss begynne hovedfunksjonens kropp nå. Pool () -funksjonen vil bli brukt. Neste linje bruker MAP () -metoden. Det er to parametere for denne metoden. Torget til heltallet er gitt som den første parameteren. Range () -funksjonen brukes som det andre argumentet. Innenfor rekkevidden () er de nedre og øvre begrensninger spesifisert. Før vi avslutter koden, vil vi bruke 'for' -sløyfen. Vi initialiserer loopvariabelen. Denne sløyfen itererer til den gitte tilstanden er oppfylt. Etter dette brukes print () -metoden for å representere resultatet.

Konklusjon

I denne guiden har vi snakket om multiprosesseringsbassenget til Python. Når mange prosesser trenger å operere samtidig eller en langvarig operasjon må bli fremskyndet, er multiprosessering viktig. Når en prosess kjører på en enkelt tråd, er dens evner begrenset; Ellers ville dette strekke tentaklene gjennom mange tråder. Python tilbyr et enkelt grensesnitt for å implementere multiprosessering hvis den tidkrevende operasjonen kan utføre samtidig og hele systemet støtter mange prosessorarkitekturer. Vi har utført tre forekomster der vi setter kodens tidsramme.