ThreadPoolExecutor Python

ThreadPoolExecutor Python
ThreadPoOlExecutor er en Python -klasse som finnes i pakken som heter “Samtidig.futures ”. La oss si at vi trengte å lage mange tråder til våre meget parallelliserte jobber. Det er det dyreste, fordi det kan være flere effektivitetsproblemer som et resultat av å ha så mange flere prosesser. En stor bekymring kan være at gjennomstrømningen blir begrenset. Du kan overvinne dette problemet ved å konstruere et trådbasseng. Et trådbasseng er en samling av forhåndsinstansierte eller inaktive prosesser som venter på å bli tildelt arbeid. Hver gang et betydelig sett med aktiviteter må fullføres, anbefales det vanligvis å etablere et trådbasseng for å utvikle nye prosesser for hver jobb. Et trådbasseng kan gjøre følgende oppgaver:
  • Når en prosess inne i et trådbasseng har fullført behandlingen, kan den brukes igjen.
  • Når en tråd er avsluttet, dannes en ny tråd for å ta sin plass.

Samtidig.Futures -pakke er en del av det vanlige biblioteket Python. I Python 3.2, ble denne pakken opprettet for å gi programmerere et forhøyet grensesnitt for å sette i gang samtidig prosesser. Det er et mellomnivå bygget på toppen av Pythons multitasking samt multiprosesseringspakker som lar deg utføre oppgaver ved å bruke et basseng med tråder eller prosedyrer. Innenfor denne artikkelen vil vi ta en titt på tråden Pool Executor Class og dens funksjoner.

Eksempel 01:

La oss ta en titt på tråden Pool Executor -klassen i Python -koden vår. For det første har vi brukt “samtidig.Futures ”-pakke ved å bruke" From "nøkkelordet i første linje for å importere" ThreadPoOOLExecutor "-klassen i koden. Etter dette har vi initialisert en liste med 4 tall. Den første funksjonen er en brukerdefinert funksjon som heter “Square”, og den vil beregne en firkant av en verdi som er gitt i argumentene. Den andre metoden er konstruktørfunksjonen jeg.e., Main () Metode som utførelsen starter fra i. Så den brukerdefinerte funksjonen "firkantet" er definert ved hjelp av nøkkelordet "def" og tar argumentverdien til å beregne kvadratet.

"" -Brakettene brukes til å ta den numeriske verdien av en variabel "z" i stedet for å ta "z" som en streng her. "F" -tegn før tekst- og beregningsuttalelsen viser at verdiene vil bli tatt som flyter og deres firkant vil bli beregnet. Utskriftserklæringen bruker dette formatet for å få en firkant og skrive det ut i Spyder3 Output Shell. Nå, her kommer hovedkonstruktøren (). Konstruktøren initialiserer en tom liste som heter “Val”. Det er på tide å bruke ThreadPoolExecutor -klassen for å lage et basseng på 5 tråder som skal brukes asynkront.

For dette kan du bruke "med" -uttalelsen med navnet "ThreadPoOOLExecutor" som tar et argument "Max_workers" med verdi 5. Du kan se det som en sløyfe som tar 1 verdi hver gang. Sendingsfunksjonen til ThreadPoolExecutor -klassen brukes til å utføre en funksjon i.e., “Square” og gir et kvadrat med et tall som er overført til det. Det tar nummer 1 som startverdi til den firkantede metoden, og etter dette vil den ta verdiene fra listen “L”. "MAP" -funksjonen brukes her for raskt å oversette funksjonen og iterable samlet som en og reiser en feil i "Samtidig.Futures ”-pakke. Unntaket vil bli lagret i variabelen “val”, og utskriftserklæringen vil bli brukt til å vise det unntaket som brukes i “For” -sløyfen på utgangsskjermen.

fra samtidig.Futures import threadpoolexecutor
L = [2,3,4,5]
def square (z):
print (f'square of z: z*z ')
if __name__ == '__main__':
val = []
Med ThreadPoOOOlExecutor (Max_Workers = 5) som EXE:
EXE.Send inn (firkant, 1)
val = exe.Kart (Square, L)
for res i val:
trykk (res)

Bassenget med 5 tråder er opprettet for å beregne en kvadrat med 5 verdier fra 1 til 5 som vist i utgangen.

Eksempel 02:

Her kommer det siste eksemplet på å bruke ThreadPoOOOLExecutor -klassen i Python -kode. Så vi har startet disse nye eksemplene med importen av en klasse ved å bruke pakken “Samtidig.futures ”. Initialiser deretter en variabel "sum" med 0 verdi. Den brukerdefinerte funksjonen som heter "prosess" er erklært med å ta et argument "n" i den. Denne funksjonen skriver ut trådnumrene via utskriftserklæringen. Trådnummeret oppsummeres med nummer 5 lagt til variabelen “Sum”. Denne beregnede summen for hver tråd vil bli vist på utdataene som bruker utskriftserklæringen. Hovedmetodeens definisjon er startet her. Den bruker ThreadPoolExecutor for å lage et basseng på 3 tråder. "Prosess" -funksjonen har blitt kalt 3 ganger ved bruk av "Send" -funksjonen for 3 forskjellige verdier. Etter at alle trådene i prosessmetoden blir utført, vil den vise fullføringsmeldingen. Hoved () funksjonserklæring brukes etter det.

fra samtidig.Futures import threadpoolexecutor
Sum = 0
def prosess (n):
print ("Behandle tråden: ".Format (n))
Sum = n + 5
Print ("Summen av og 5 er:".Format (n), sum)
def main ():
Print ("Start ThreadPoolExecutor")
Med ThreadPoolExecutor (max_workers = 3) som eks:
val = eks.Send inn (prosess, (2))
val = eks.Send inn (prosess, (4))
val = eks.Send inn (prosess, (5))
trykk ("Alle trådene blir behandlet fullstendig")
if __name__ == '__main__':
hoved()

Utførelsen viser at bassenget startes, og hvert trådnummer med summen med nummer 5 vises.

Konklusjon:

Vi har dekket og diskutert TREDPOOLExecutor -klassen og alle de muligens brukte funksjonene til den i eksemplene våre. Vi burde gjøre det like upretensiøs som sannsynlig for brukerne våre. Vi har sett på et kart og sende inn funksjon også. Vi forventer den beste responsen.