Hvordan best implementere multiprosessering i Python?



Denne artikkelen vil introdusere deg for Multiprocessing i Python, og i prosessen vil du også ende opp med å gi deg en programmatisk demonstrasjon.

2019 har vært et veldig stort år for teknologisk utvikling over hele kloden. Fra og med dataprodusenter som legger til flere kjerner til deres prosessorer og prosessorer til lanseringen av smartere sjetonger i mobiltelefoner, er ikke flere prosesser en drøm lenger. I dag er et av de mest fremtredende programmeringsspråkene som støtter Multiprocessing . Takket være introduksjonen av parallell prosessorkraft i utgivelsen, kan kodere over hele verden nå sømløst lage koder som skal utføres samtidig og dermed deres kjøretid med et betydelig beløp.

Følgende tips vil bli dekket i denne artikkelen,





hvordan gjøre tillegg i java

La oss starte,

Multiprosessering i Python

Hva er multiprosessering?

Multiprosessering kan ganske enkelt defineres som et systems evne til å støtte mer enn én operasjon ved en hvilken som helst gitt forekomst. Hva dette betyr er at applikasjoner i flerbehandlingssystemer blir brutt ned i små biter og deretter kjøres uavhengig av hverandre for å øke effektiviteten og redusere den totale kjøretiden. Prosessoren i systemet tildeler hvert lite stykke en uavhengig tråd, slik at den kan fungere som en frittstående enhet.



Behovet for flerbehandling

Tenk deg et datasystem som bare har en kjerne i prosessoren. Hvis flere oppgaver er tilordnet denne kjernen, har den hver oppgave mellom seg og deretter byttet til den neste. Dette vil ikke øke mengden tid som er nødvendig for å fullføre hver oppgave, men vil også redusere systemets samlede effektivitet.

På den annen side kan en flerbehandlingscomputer ha en prosessor som igjen har flere fungerende enheter inni seg, kalt individuelle kjerner som har muligheten til å kjøre flere forskjellige oppgaver uavhengig samtidig. Dette øker ikke bare effektiviteten til systemet, men reduserer også systemets kjøretid med en betydelig mengde på sikt.



Et flerbehandlingssystem i Python kan være av to typer.

Multi prosessorsystem

Dette systemet har i utgangspunktet flere prosessorer tilstede under panseret, som hver kan utføre en oppgave om gangen og fungere som en uavhengig komponent.

Multikjerners prosessorsystem

Dette systemet har flere kjerner til stede i samme prosessor, der kjernen fungerer som en separat enhet og utfører oppgaver uavhengig som er tilordnet den.

Kode for multiprosessering i Python

Nå som du er vant til det grunnleggende konseptet med multibearbeiding, la oss utforske hvordan flerbearbeiding kan oppnås i Python.

I Python inneholder tolken en veldig enkel og intuitiv API som tar en enkelt oppgave, deler den opp i flere komponenter og får dem behandlet uavhengig.

Ta en titt på programmodulen nedenfor for å forstå dette konseptet med Multiprocessing in python bedre.

Eksempel 1

# importerer multiprosesseringsmodulen import multiprosessering def print_cube (num): '' 'funksjon for å skrive ut kube av gitt nummer' '' print ('Cube: {}'. format (num * num * num)) def print_square (num): '' 'funksjon for å skrive ut kvadrat med gitt antall' '' utskrift ('Kvadrat: {}'. format (num * num)) hvis __navn__ == '__main__': # opprette prosesser p1 = flerbehandling.Prosess (target = print_square, args = (10,)) p2 = multiprosessering.Prosess (target = print_cube, args = (10,)) # startprosess 1 p1.start () # startprosess 2 p2.start () # vent til prosess 1 er ferdig p1 .forenes () # vent til prosess 2 er ferdig p2.forenes () # begge prosessene er ferdig utskrift ('Ferdig!')

Produksjon

Firkant: 100

Kube: 1000

Ferdig!

La oss nå analysere dette programmet for å forstå det bedre.

  1. Det første trinnet er å importere multiprosesseringsmodulen. For å gjøre dette, bruk følgende syntaks: importer multiprosessering.

  2. Nå som multiprosesseringsmodulen er importert, la oss gå videre og lage en prosess. For å gjøre dette, oppretter vi et objekt fra prosessklassen og tildeler det følgende argumenter. Mål: funksjonen som må utføres av denne prosessen og argumenterer: argumentene som må overføres til målfunksjonen.

Merk: En proseskonstruktør har evnen til å ta på seg flere mål så vel som argumenter, men i eksemplet ovenfor har vi bare tilordnet prosessen to mål og argumenter som vist nedenfor.

p1 = multiprosessering. prosess (target = print_square, args = (10,))

p2 = multiprosessering. prosess (target = print_cube, args = (10,))

  1. Nå som prosessen er opprettet, la oss skrive syntaksen for å starte den samme.

p1.start ()

p2.start ()

Når prosessen er startet, kjøres det nåværende programmet og det allerede utførte programmet samtidig. Hvis du i en viss situasjon trenger å stoppe utførelsen av det nåværende programmet og bare fokusere på utførelsen av den eksisterende, bruker vi sammenføyningsfunksjonen som vist nedenfor.

p1.forenes ()

p2. bli med ()

Når du har lagt inn denne syntaksen, vil tolken vente på at programmet p1 er ferdig med kjøringen, og deretter gå videre til programmet p2.

For å forstå dette konseptet videre, ta en titt på et annet eksempel for Multiprocessing In Python nedenfor.

fordeler og ulemper med hacking

Eksempel 2

# importerer multiprosesseringsmodulen import multiprosessering import os def arbeider1 (): # utskriftsprosess id utskrift ('ID for prosess som kjører arbeider1: {}'. format (os.getpid ())) def arbeider2 (): # utskriftsprosess id utskrift ('ID for prosess som kjører arbeider2: {}'. Format (os.getpid ())) hvis __name__ == '__main__': # utskrift hovedprogram prosess ID utskrift ('ID for hovedprosess: {}'. Format (os .getpid ())) # skape prosesser p1 = multiprosessering.Prosess (mål = arbeider1) p2 = multiprosessering.Prosess (mål = arbeider2) # startprosesser p1.start () p2.start () # prosess-ID skrives ut ('ID for prosess p1: {} '. format (p1.pid)) utskrift (' ID for prosess p2: {} '. format (p2.pid)) # vent til prosessene er ferdige p1.join () p2.join () # begge prosesser ferdig utskrift ('Begge prosessene er ferdig utført!') # sjekk om prosessene er i live utskrift ('Prosess p1 er i live: {}'. format (p1.is_alive ())) utskrift ('Prosess p2 er i live: {} '.format (p2.is_alive ()))

Produksjon

ID for hovedprosessen: 18938

ID for prosessløpende arbeider1: 18939

ID for prosessløpende arbeider2: 18940

Prosess-ID p1: 18939

ID for prosess p2: 18940

Begge prosessene er ferdig utført!

Prosess p1 lever: Falsk

Prosess p2 lever: Falske

Legg merke til i programmet ovenfor at både prosess p1 og p2 kjører uavhengig av deres individuelle minner. Så snart begge er ferdig utført, avsluttes programmet.

Dette bringer oss til slutten av denne artikkelen om multiprosessering i Python

For å få inngående kunnskap om Python sammen med dets forskjellige applikasjoner, kan du for live online trening med 24/7 support og levetidstilgang.

Har du spørsmål til oss? Nevn dem i kommentarfeltet i artikkelen, så kommer vi tilbake til deg.