Python Multiprocessing Queue

Python Multiprocessing Queue



Det mest afgørende element i datastrukturen er køen. 'først ind, først ud' datastrukturkøen, som er grundlaget for Python multiprocessing, er sammenlignelig. Der leveres køer til procesfunktionen for at tillade processen at indsamle dataene. Det første dataelement, der skal fjernes fra køen, er det første element, der skal indtastes. Vi bruger køens 'put()'-metode til at tilføje data til køen og dens 'get()'-metode til at hente data fra køen.

Eksempel 1: Brug af Queue()-metoden til at oprette en multiprocessing-kø i Python

I dette eksempel opretter vi en multiprocessing-kø i Python ved hjælp af 'queue()'-metoden. Multiprocessing refererer til brugen af ​​en eller flere CPU'er i et system til at udføre to eller flere processer samtidigt. Multiprocessing, et konstrueret modul i Python, letter skift mellem processer. Vi skal være fortrolige med procesegenskaben, før vi arbejder med multiprocessing. Vi er klar over, at køen er en afgørende komponent i datamodellen. Standarddatakøen, som er bygget på 'First-In-First-Out'-ideen, og Python-multiprocessing er nøjagtige modstykker. Generelt gemmer køen Python-objektet og er afgørende for dataoverførsel mellem opgaver.







'Spyder'-værktøjet bruges til at implementere det nuværende Python-script, så lad os bare komme i gang. Vi skal først importere multiprocessing modulet, fordi vi kører Python multiprocessing scriptet. Det gjorde vi ved at importere multiprocessing-modulet som 'm'. Ved at bruge 'm.queue()'-teknikken påberåber vi multiprocessing-metoden 'queue()'. Her opretter vi en variabel kaldet 'kø' og placerer multiprocessing-metoden 'kø()' i den. Da vi ved, at køen gemmer varer i en 'først ind, først ud' rækkefølge, fjernes den vare, som vi tilføjer først. Efter at have startet multiprocessing-køen, kalder vi 'print()'-metoden og sender sætningen 'Der er en multiprocessing-kø' som argument for at vise den på skærmen. Derefter, fordi vi gemmer den konstruerede kø i denne variabel, udskriver vi køen ved at sende 'kø'-variablen i parentes af 'print()'-metoden.




Følgende billede viser, at Python-multiprocessing-køen nu er konstrueret. Udskriften vises først. Efter at denne multiprocessing-kø er konstrueret i den udpegede hukommelsesadresse, kan den bruges til at overføre de forskellige data mellem to eller flere kørende processer.







Eksempel 2: Brug af metoden 'Qsize()' til at bestemme størrelsen af ​​multiprocessing-køen i Python

Vi bestemmer størrelsen på multiprocessing-køen i dette tilfælde. For at beregne størrelsen af ​​multiprocessing-køen bruger vi 'qsize()'-metoden. Funktionen 'qsize()' returnerer den reelle størrelse af Python-multiprocessing-køen. Med andre ord giver denne metode det samlede antal varer i en kø.

Lad os begynde med at importere Python multiprocessing-modulet som 'm', før du kører koden. Derefter, ved at bruge 'm.queue()'-kommandoen, aktiverer vi multiprocessing-funktionen 'queue()' og sætter resultatet i 'Queue'-variablen. Derefter, ved hjælp af 'put()'-metoden, tilføjer vi elementerne til køen i den følgende linje. Denne metode bruges til at tilføje data til en kø. Derfor kalder vi 'Queue' med 'put()'-metoden og angiver heltal som element i parentesen. De tal, vi tilføjer, er '1', '2', '3', '4', '5', '6' og '7' ved hjælp af 'put()'-funktionerne.



Ved at bruge 'Queue' til at opnå størrelsen på multiprocessing-køen, kalder vi 'qsize()' med multiprocessing-køen. Derefter gemmer vi resultatet af 'qsize()'-metoden i den nydannede 'result'-variabel. Derefter kalder vi 'print()'-metoden og sender sætningen 'Multiprocessing-køens størrelse er' som dens parameter. Dernæst kalder vi 'resultat'-variablen i 'print()'-funktionen, da størrelsen er gemt i denne variabel.


Outputbilledet har den viste størrelse. Da vi bruger 'put()'-funktionen til at tilføje syv elementer til multiprocessing-køen og 'qsize()'-funktionen til at bestemme størrelsen, vises multiprocessing-køens størrelse '7'. Indtastningserklæringen 'størrelsen på multiprocessing-køen' vises før størrelsen.

Eksempel 3: Brug af metoden 'Put()' og 'Get()' i Python Multiprocessing Queue

'put()' og 'get()'-kømetoderne fra Python-multiprocessing-køen bruges i dette eksempel. Vi udvikler to brugerdefinerede funktioner i dette eksempel. I dette eksempel definerer vi en funktion til at skabe en proces, der producerer '5' tilfældige heltal. Vi bruger også 'put()'-metoden til at tilføje dem til en kø. Metoden 'put()' bruges til at placere elementerne i køen. Derefter, for at hente tallene fra køen og returnere deres værdier, skriver vi en anden funktion og kalder den under proceduren. Vi bruger 'get()'-funktionen til at hente tallene fra køen, da denne metode bruges til at hente data fra køen, som vi indsætter ved hjælp af 'put()'-metoden.

Lad os begynde at implementere koden nu. Først importerer vi de fire biblioteker, der udgør dette script. Vi importerer først 'søvn' fra tidsmodulet for at forsinke udførelsen i nogen tid målt i sekunder, efterfulgt af 'tilfældig' fra det tilfældige modul, som bruges til at generere tilfældige tal, derefter 'behandle' fra multiprocessing, fordi denne kode skaber en proces , og endelig 'køen' fra multiprocessing. Ved indledningsvis at konstruere en klasseinstans kan køen bruges. Som standard etablerer dette en uendelig kø eller en kø uden maksimal størrelse. Ved at indstille muligheden for max størrelse til et tal, der er større end nul, er det muligt at lave en skabelse med en størrelsesbegrænsning.


Vi definerer en funktion. Da denne funktion er brugerdefineret, giver vi den navnet 'funktion1' og videregiver udtrykket 'kø' som argument. Efter det påkalder vi 'print()'-funktionen og giver den 'builder: Running', 'flush' og objektet 'True'-udsagn . Pythons printfunktion har en unik mulighed kaldet flush, der lader brugeren vælge, om denne output skal bufferes eller ej. Det næste trin er at generere opgaven. For at gøre dette bruger vi 'for' og opretter variablen 'm' og indstiller området til '5'. Brug derefter 'random()' på den næste linje og gem resultatet i den variabel, vi lavede, som er 'værdi'. Dette indikerer, at funktionen nu afslutter sine fem iterationer, hvor hver iteration skaber et tilfældigt heltal fra 0 til 5.

Derefter kalder vi i det følgende trin funktionen 'sleep()' og sender 'værdi'-argumentet for at forsinke delen i et bestemt antal sekunder. Derefter kalder vi 'køen' med 'put()'-metoden for i det væsentlige at tilføje værdien til køen. Brugeren bliver derefter informeret om, at der ikke er yderligere arbejde at gøre ved at påkalde 'queue.put()'-metoden endnu en gang og overføre værdien 'Ingen'. Derefter kører vi 'print()'-metoden, sender 'builder: ready'-sætningen sammen med 'flush' og indstiller den til 'True'.


Vi definerer nu en anden funktion, 'funktion2', og tildeler nøgleordet 'kø' som dets argument. Derefter kalder vi 'print()'-funktionen, mens rapporten sendes til 'Bruger: Kører' og 'flush', som er indstillet til 'True'. Vi starter operationen af ​​'funktion2' ved at bruge betingelsen while true for at tage dataene ud af køen og lægge dem i den nyoprettede 'item'-variabel. Derefter bruger vi betingelsen 'hvis', 'vare er ingen', til at afbryde løkken, hvis betingelsen er sand. Hvis ingen vare er tilgængelig, stopper den og beder brugeren om en. Opgaven stopper løkken og slutter i dette tilfælde, hvis elementet, der opnås fra værdien, er null. Derefter kalder vi i det følgende trin 'print()'-funktionen og giver rapporten 'Bruger: klar' og 'flush=True'-parametre til den.


Derefter går vi ind i hovedprocessen ved at bruge 'If-name = main_'. Vi opretter en kø ved at kalde 'queue()'-metoden og gemme den i 'queue'-variablen. Dernæst opretter vi en proces ved at kalde brugerfunktionen 'funktion2'. Til dette kalder vi 'proces'-klassen. Inde i den sender vi 'target=function2' for at kalde funktionen i processen, videregiver argumentet 'queue' og gemmer det i 'User_process'-variablen. Processen starter derefter med at kalde 'start()'-metoden med variablen 'User_ process'. Vi gentager derefter den samme procedure for at kalde 'funktion1' i processen og sætte den i 'byggerproces'-variablen. Derefter kalder vi processerne med 'join()'-metoden for at vente på udførelsen.


Nu hvor det er præsenteret, kan du se udsagn for begge funktioner i outputtet. Den viser de elementer, vi tilføjede ved hjælp af henholdsvis 'put()' og 'get()' ved at bruge 'get()'-metoderne.

Konklusion

Vi lærte om Python-multiprocessing-køen i denne artikel. Vi brugte de givne illustrationer. Først beskrev vi, hvordan man opretter en kø i Python multiprocessing ved hjælp af queue()-funktionen. Derefter brugte vi 'qsize()'-metoden til at bestemme køens . Vi brugte også køens put() og get() metoder. Søvnklassen for tidsmodulet og den tilfældige klasse for det tilfældige modul blev begge diskuteret i det sidste eksempel.