Multiprosessering er sammenlignbar med multithreading. Imidlertid skiller det ved at vi bare kan utføre en tråd i et øyeblikk på grunn av Gil som er ansatt for tråding. Multiprosessering er prosessen med å utføre operasjoner sekvensielt over flere CPU -kjerner. Tråder kan ikke betjenes parallelt. Imidlertid lar multiprosessering oss etablere prosessene og kjøre dem samtidig på forskjellige CPU -kjerner. Løkken, for eksempel For-loop, er et av de mest brukte skriptspråkene. Gjenta det samme arbeidet med forskjellige data til et kriterium, for eksempel et forhåndsbestemt antall iterasjoner, er nådd. Sløyfen oppnår hver iterasjon en etter en.
Eksempel 1: Bruke for-loopen i Python multiprosesseringsmodul
I dette eksemplet bruker vi For-loop og Python Multiprocessing Module Class Process. Vi begynner med et veldig greit eksempel, slik at du raskt kan forstå hvordan Python multiprosessering for loop fungerer. Ved å bruke et grensesnitt som kan sammenlignes med trådmodulen, pakker multiprosessering opprettelsen av prosesser.
Ved å bruke underprosessene i stedet for tråder, gir multiprosesseringspakken både lokal og fjern samtidighet, og unngår dermed den globale tolklåsen. Bruk en for-loop, som kan være et strengobjekt eller en tuple, for å kontinuerlig iterere gjennom en sekvens. Dette fungerer mindre som nøkkelordet som er sett på andre programmeringsspråk og mer som en iteratormetode som finnes i andre programmeringsspråk. Ved å starte en ny multiprosessering, kan du kjøre en for-loop som utfører en prosedyre samtidig.
La oss begynne med å implementere koden for kodeutførelse ved å bruke "Spyder" -verktøyet. Vi tror at "Spyder" også er den beste for å kjøre Python. Vi importerer en multiprosesseringsmodulprosess som koden kjører. Multiprosessering i Python -konseptet kalt en "prosessklasse" skaper en ny Python -prosess, gir den en metode for å utføre kode, og gir foreldreapplikasjonen en måte å administrere utførelsen. Prosessklassen inneholder prosedyrene for start () og bli med (), som begge er avgjørende.
Deretter definerer vi en brukerdefinert funksjon som heter “func”. Siden det er en brukerdefinert funksjon, gir vi den et navn etter vårt valg. Inne. Deretter kaller vi "print ()" -funksjonen, og består uttalelsen "navnet på det vanlige emnet er" så vel som dets "emne" -argumentet som inneholder verdien. Deretter bruker vi i det følgende trinn.
Tilstandsdelen du begynner med kan tenkes på i de fleste omstendigheter som et sted for å gi innholdet som bare skal utføres når filen din kjører som et skript. Deretter bruker vi argumentet og lagrer noen verdier i det som er "vitenskap", "engelsk" og "datamaskin". Prosessen får da navnet "Process1 []" i følgende trinn. Deretter bruker vi "prosessen (målet = func)" for å kalle funksjonen i prosessen. Mål brukes til å kalle funksjonen, og vi lagrer denne prosessen i "P" -variabelen.
Deretter bruker vi “Process1” for å kalle “vedlegg ()” -funksjonen som legger til et element til slutten av listen som vi har i funksjonen “Func.”Fordi prosessen er lagret i“ P ”-variabelen, overfører vi“ P ”til denne funksjonen som argument. Til slutt bruker vi "Start ()" -funksjonen med "P" for å starte prosessen. Etter det kjører vi metoden igjen mens vi leverer "emnet" -argumentet og bruker "for" i emnet. Deretter bruker vi "ADD" og “ADD ()” -metoden en gang til, vi begynner prosessen. Prosessen går deretter og utgangen returneres. Prosedyren får deretter beskjed om å avslutte med "join ()" -teknikken. Prosessene som ikke kaller prosedyren "Join ()" vil ikke avslutte. Et avgjørende poeng er at "Args" nøkkelordparameter må brukes hvis du vil gi noen argumenter gjennom prosessen.
Nå kan du se i utgangen at uttalelsen vises først ved å gi verdien for "matematikk" -faget som vi går over til "func" -funksjonen fordi vi først kaller det ved hjelp av "prosessen" -funksjonen. Deretter bruker vi kommandoen "vedlegg ()" for å ha verdier som allerede var i listen som er lagt til på slutten. Da ble "vitenskap", "datamaskin" og "engelsk" presentert. Men som du kan se, er ikke verdiene i riktig sekvens. Dette er fordi de gjør det så raskt som prosedyren er ferdig og rapporterer om meldingen.
Eksempel 2: Konvertering av sekvensiell for-loop til multiprosessering parallelt for-loop
I dette eksemplet utføres den multiprosesseringssløyfeoppgaven sekvensielt før den blir konvertert til en parallell for-loop-oppgave. Du kan sykle gjennom sekvenser som en samling eller streng i den rekkefølgen de oppstår ved å bruke for-loops.
La oss nå begynne å implementere koden. Først importerer vi "søvn" fra tidsmodulen. Ved å bruke "Sleep ()" -prosedyren i tidsmodulen, kan du suspendere utførelsen av anropstråden så lenge du vil. Deretter bruker vi "tilfeldig" fra den tilfeldige modulen, definerer en funksjon med navnet "func", og passerer nøkkelordet "Argu". Deretter lager vi en tilfeldig verdi ved å bruke "val" og setter den til "tilfeldig". Deretter blokkerer vi i en liten periode ved å bruke metoden “Sleep ()” og passere “Val” som en parameter. For å overføre en melding, kjører vi “Print ()” -metoden, og passerer ordene “Klar” og nøkkelordet “Arg” som dens parameter, så vel som “opprettet” og passerer verdien ved å bruke “Val”.
Til slutt bruker vi "Flush" og setter den til "True". Brukeren kan bestemme om de skal buffer utdataene eller ikke ved hjelp av BLUSH -alternativet i utskriftsfunksjonen til Python. Denne parameterens standardverdi av falsk indikerer at utgangen ikke vil bli buffret. Utgangen vises som en serie med linjer som følger hverandre hvis du setter den til True. Deretter bruker vi "IF Name == Main" for å sikre inngangspunktene. Deretter utfører vi jobben sekvensielt. Her setter vi rekkevidden til “10”, noe som betyr at sløyfen slutter etter 10 iterasjoner. Deretter kaller vi "print ()" -funksjonen, pass den "klare" inngangsuttalelse og bruker alternativet "flush = sanne".
Du kan nå se at når vi utfører koden, får sløyfen funksjonen til å kjøre "10" ganger. Det itererer gjennom 10 ganger, starter ved indeks null og slutter ved indeks ni. Hver melding inneholder et oppgavetall som er et funksjonsnummer som vi gir inn som en "arg" og et opprettelsesnummer.
Denne sekvensielle sløyfen blir nå forvandlet til en parallell med flere. Vi bruker den samme koden, men vi skal til noen ekstra biblioteker og funksjoner for multiprosessering. Derfor må vi importere prosessen fra multiprosessering, akkurat som vi forklarte tidligere. Deretter lager vi en funksjon som heter "func" og passerer nøkkelordet "arg" før vi bruker "val = tilfeldig" for å få et tilfeldig tall.
Etter å ha påkalt “Print ()” -metoden for å vise en melding og gi “Val” -parameteren for å utsette en liten periode, bruker vi “IF Name = Main” -funksjonen for å sikre inngangspunktene. Hvorpå lager vi en prosess og kaller funksjonen i prosessen ved å bruke "prosess" og passerer "Target = func". Deretter passerer vi “func”, “arg”, passerer verdien “m” og passerer rekkevidden “10”, noe som betyr at sløyfen avslutter funksjonen etter “10” iterasjoner. Deretter starter vi prosessen ved å bruke "start ()" -metoden med "prosess". Deretter kaller vi metoden “bli med ()” for å vente på utførelsen av prosessen og for å fullføre all prosessen etter.
Derfor, når vi utfører koden, kaller funksjonene hovedprosessen og begynner utførelsen. De er imidlertid ferdige til alle oppgavene er utført. Vi kan se at fordi hver oppgave utføres samtidig. Den rapporterer meldingen så snart den er ferdig. Dette betyr at selv om meldingene er ute av drift, avsluttes sløyfen tross alt "10" iterasjoner er fullført.
Konklusjon
Vi dekket Python Multiprocessing for-loop i denne artikkelen. Vi presenterte også to illustrasjoner. Den første illustrasjonen viser hvordan du bruker en for-loop i Pythons Loop Multiprocessing Library. Og den andre illustrasjonen viser hvordan du kan endre en sekvensiell for-loop til en parallell multiprosessering for-loop. Før vi konstruerer skriptet til Python Multiprocessing, må vi importere multiprosesseringsmodulen.