Python Multiprocessing Queue

Python Multiprocessing Queue



Najdôležitejším prvkom dátovej štruktúry je front. Front dátovej štruktúry „prvý dovnútra, prvý von“, ktorý je základom pre multiprocesing v Pythone, je porovnateľný. Funkcie procesu sa poskytujú fronty, ktoré procesu umožňujú zhromažďovať údaje. Prvá položka údajov, ktorá sa má odstrániť z frontu, je prvá položka, ktorá sa má zadať. Používame metódu „put()“ frontu na pridanie údajov do frontu a jej metódu „get()“ na načítanie údajov z frontu.

Príklad 1: Použitie metódy Queue() na vytvorenie frontu na viacnásobné spracovanie v Pythone

V tomto príklade vytvoríme front na viacnásobné spracovanie v Pythone pomocou metódy „queue()“. Multiprocessing sa týka použitia jedného alebo viacerých CPU v systéme na vykonávanie dvoch alebo viacerých procesov súčasne. Multiprocessing, modul vytvorený v Pythone, uľahčuje prepínanie medzi procesmi. Pred prácou s multiprocesingom musíme byť oboznámení s vlastnosťou procesu. Sme si vedomí toho, že front je kľúčovou súčasťou dátového modelu. Štandardný dátový front, ktorý je postavený na myšlienke „First-In-First-Out“ a Python multiprocessing sú presnými náprotivkami. Vo všeobecnosti sa vo fronte ukladá objekt Python a je rozhodujúci pre prenos údajov medzi úlohami.







Nástroj „spyder“ sa používa na implementáciu prítomného skriptu Python, takže jednoducho začnime. Najprv musíme importovať modul multiprocessingu, pretože spúšťame skript multiprocessingu Python. Urobili sme to importovaním modulu na viacnásobné spracovanie ako „m“. Pomocou techniky „m.queue()“ vyvoláme metódu multiprocessingu „queue()“. Tu vytvoríme premennú s názvom „queue“ a umiestnime do nej metódu multiprocessingu „queue()“. Keďže vieme, že front ukladá položky v poradí „prvý dnu, prvý von“, položka, ktorú pridávame ako prvá, sa odstraňuje ako prvá. Po spustení fronty na viacnásobné spracovanie potom zavoláme metódu „print()“, ktorej argumentom na zobrazenie na obrazovke je príkaz „Existuje fronta viacerých procesov“. Potom, pretože vytvorený front ukladáme do tejto premennej, vytlačíme front tak, že premennú „queue“ odovzdáme v zátvorke metódy „print()“.




Nasledujúci obrázok ukazuje, že front na multiprocesovanie Pythonu je teraz vytvorený. Najprv sa zobrazí tlačový výpis. Potom, čo je tento multiprocessingový front vytvorený v určenej adrese pamäte, môže byť použitý na prenos odlišných údajov medzi dvoma alebo viacerými bežiacimi procesmi.







2. príklad: Použitie metódy „Qsize()“ na určenie veľkosti fronty na viacnásobné spracovanie v Pythone

V tomto prípade určujeme veľkosť frontu na viacnásobné spracovanie. Na výpočet veľkosti fronty na viacnásobné spracovanie používame metódu „qsize()“. Funkcia „qsize()“ vracia skutočnú veľkosť frontu multiprocesingu v Pythone. Inými slovami, táto metóda poskytuje celkový počet položiek vo fronte.

Začnime importovaním modulu multiprocessingu Python ako „m“ pred spustením kódu. Potom pomocou príkazu „m.queue()“ vyvoláme funkciu „queue()“ pre viacnásobné spracovanie a výsledok vložíme do premennej „Queue“. Potom pomocou metódy „put()“ pridáme položky do frontu v nasledujúcom riadku. Táto metóda sa používa na pridanie údajov do frontu. Preto zavoláme „Queue“ pomocou metódy „put()“ a v zátvorkách uvedieme celé čísla ako jej prvok. Čísla, ktoré pridávame, sú „1“, „2“, „3“, „4“, „5“, „6“ a „7“ pomocou funkcií „put()“.



Okrem toho, pomocou „Queue“ na získanie veľkosti multiprocessingového frontu nazývame „qsize()“ s multiprocessingovým frontom. Potom do novovytvorenej premennej „result“ uložíme výsledok metódy „qsize()“. Potom zavoláme metódu „print()“ a ako jej parameter odovzdáme príkaz „Veľkosť fronty viacerých procesov je“. Ďalej zavoláme premennú „výsledok“ vo funkcii „print()“, pretože veľkosť je uložená v tejto premennej.


Výstupný obrázok má zobrazenú veľkosť. Keď používame funkciu „put()“ na pridanie siedmich prvkov do frontu na viacnásobné spracovanie a funkciu „qsize()“ na určenie veľkosti, zobrazí sa veľkosť frontu na viacnásobné spracovanie „7“. Vstupný výraz „veľkosť frontu na viacnásobné spracovanie“ sa zobrazuje pred veľkosťou.

Príklad 3: Použitie metódy „Put()“ a „Get()“ vo fronte na viacnásobné spracovanie Pythonu

V tomto príklade sú použité metódy frontu „put()“ a „get()“ z frontu na multiprocesovanie Pythonu. V tomto príklade vyvíjame dve užívateľom definované funkcie. V tomto príklade definujeme funkciu na vytvorenie procesu, ktorý produkuje „5“ náhodných celých čísel. Na ich pridanie do frontu používame aj metódu „put()“. Metóda „put()“ sa používa na umiestnenie položiek do poradia. Potom, aby sme získali čísla z frontu a vrátili ich hodnoty, napíšeme ďalšiu funkciu a zavoláme ju počas procedúry. Na získanie čísel z frontu používame funkciu „get()“, pretože táto metóda sa používa na získanie údajov z frontu, ktoré vkladáme pomocou metódy „put()“.

Začnime teraz implementovať kód. Najprv importujeme štyri knižnice, ktoré tvoria tento skript. Najprv importujeme „spánok“ z časového modulu, aby sme oneskorili spustenie o určitý čas meraný v sekundách, nasleduje „náhodný“ z náhodného modulu, ktorý sa používa na generovanie náhodných čísel, a potom „proces“ z multiprocesingu, pretože tento kód vytvára proces a nakoniec „front“ z multiprocesingu. Po počiatočnom vytvorení inštancie triedy je možné použiť front. Štandardne sa tým vytvorí nekonečný front alebo front bez maximálnej veľkosti. Nastavením možnosti maximálnej veľkosti na číslo, ktoré je väčšie ako nula, je možné vytvoriť výtvor s obmedzením veľkosti.


Definujeme funkciu. Potom, keďže je táto funkcia definovaná používateľom, dáme jej názov „funkcia1“ a ako jej argument odovzdáme výraz „fronta“. Potom vyvoláme funkciu „print()“ a odovzdáme jej príkazy „builder: Running“, „flush“ a objekt „True“. Funkcia tlače Pythonu má jedinečnú možnosť nazývanú flush, ktorá umožňuje používateľovi vybrať si, či tento výstup uloží do vyrovnávacej pamäte alebo nie. Ďalším krokom je vygenerovanie úlohy. Na tento účel použijeme „for“ a vytvoríme premennú „m“ a nastavíme rozsah na „5“. Potom v ďalšom riadku použite „random()“ a výsledok uložte do premennej, ktorú sme vytvorili a ktorá je „value“. To znamená, že funkcia teraz dokončí svojich päť iterácií, pričom každá iterácia vytvorí náhodné celé číslo od 0 do 5.

Potom v nasledujúcom kroku zavoláme funkciu „sleep()“ a predáme argument „value“, aby sme odložili časť o určitý počet sekúnd. Potom zavoláme „front“ pomocou metódy „put()“, aby sme v podstate pridali hodnotu do frontu. Používateľ je potom informovaný, že už nie je potrebné vykonať žiadnu ďalšiu prácu, a to opätovným vyvolaním metódy „queue.put()“ a odovzdaním hodnoty „None“. Potom spustíme metódu „print()“, odovzdáme príkaz „builder: ready“ spolu s „flush“ a nastavíme ho na „True“.


Teraz definujeme druhú funkciu „function2“ a ako jej argument priradíme kľúčové slovo „queue“. Potom zavoláme funkciu „print()“ pri odovzdávaní stavu zostavy „Používateľ: beží“ a „vyprázdnenie“, ktoré je nastavené na hodnotu „True“. Operáciu funkcie „function2“ spustíme pomocou podmienky while true na vybratie údajov z frontu a ich uloženie do novovytvorenej premennej „item“. Potom použijeme podmienku „if“, „položka je žiadna“, na prerušenie cyklu, ak je podmienka pravdivá. Ak nie je k dispozícii žiadna položka, zastaví sa a požiada používateľa o jednu. Úloha zastaví cyklus a skončí v tomto prípade, ak je položka získaná z hodnoty null. Potom v nasledujúcom kroku zavoláme funkciu „print()“ a poskytneme k nej správu „User: ready“ a parametre „flush=True“.


Potom vstúpime do hlavného procesu pomocou „If-name = main_“. Front vytvoríme volaním metódy „queue()“ a jej uložením do premennej „queue“. Ďalej vytvoríme proces volaním užívateľskej funkcie „function2“. Na tento účel nazývame triedu „proces“. V jeho vnútri odovzdáme „target=function2“ na zavolanie funkcie v procese, odovzdáme argument „queue“ a uložíme ho do premennej „User_process“. Proces sa potom spustí volaním metódy „start()“ s premennou „User_ process“. Potom zopakujeme rovnaký postup, aby sme v procese zavolali „funkciu1“ a vložili ju do premennej „proces stavebníka“. Potom zavoláme procesy pomocou metódy „join()“, aby sme počkali na vykonanie.


Teraz, keď je prezentovaný, môžete vo výstupe vidieť príkazy oboch funkcií. Zobrazuje položky, ktoré sme pridali pomocou metód „put()“ a „get()“ pomocou metód „get()“.

Záver

V tomto článku sme sa dozvedeli o fronte na multiprocesovanie Pythonu. Použili sme uvedené ilustrácie. Najprv sme opísali, ako vytvoriť front v multiprocesnom Pythone pomocou funkcie queue(). Potom sme na určenie frontu použili metódu „qsize()“. Použili sme aj metódy put() a get() vo fronte. Trieda spánku časového modulu a náhodná trieda náhodného modulu boli obe diskutované v poslednom príklade.