Python Multiprocessing Queue

Python Multiprocessing Queue



Nejdůležitějším prvkem datové struktury je fronta. Fronta datové struktury „první dovnitř, první ven“, která je základem pro multiprocesing v Pythonu, je srovnatelná. Fronty jsou poskytovány funkci procesu, aby proces mohl shromažďovat data. První položka dat, která má být odstraněna z fronty, je první položkou, která má být zadána. K přidání dat do fronty používáme metodu „put()“ fronty a metodu „get()“ k načtení dat z fronty.

Příklad 1: Použití metody Queue() k vytvoření fronty pro více zpracování v Pythonu

V tomto příkladu vytvoříme frontu pro více zpracování v Pythonu pomocí metody „queue()“. Multiprocessing označuje použití jednoho nebo více CPU v systému k provádění dvou nebo více procesů současně. Multiprocessing, vytvořený modul v Pythonu, usnadňuje přepínání mezi procesy. Před prací s multiprocesingem musíme být obeznámeni s vlastností procesu. Jsme si vědomi, že fronta je klíčovou součástí datového modelu. Standardní datová fronta, která je postavena na myšlence „First-In-First-Out“ a Python multiprocessing jsou přesné protějšky. Obecně platí, že fronta ukládá objekt Pythonu a je klíčová pro přenos dat mezi úlohami.







Nástroj „spyder“ se používá k implementaci přítomného skriptu Python, takže jednoduše začněme. Nejprve musíme importovat modul multiprocessingu, protože spouštíme skript multiprocessingu v Pythonu. Udělali jsme to importováním modulu multiprocessingu jako „m“. Pomocí techniky „m.queue()“ vyvoláme metodu „queue()“ pro více zpracování. Zde vytvoříme proměnnou nazvanou „queue“ a umístíme do ní metodu „queue()“ pro více zpracování. Protože víme, že fronta ukládá položky v pořadí „první dovnitř, první ven“, položka, kterou přidáme jako první, je odstraněna jako první. Po spuštění fronty pro více zpracování pak zavoláme metodu „print()“ a předáme jí příkaz „Existuje fronta pro více zpracování“ jako argument pro její zobrazení na obrazovce. Poté, protože vytvořenou frontu uložíme do této proměnné, vytiskneme frontu předáním proměnné „queue“ v závorce metody „print()“.




Následující obrázek ukazuje, že fronta multiprocessingu Pythonu je nyní vytvořena. Nejprve se zobrazí tištěný výpis. Poté, co je tato fronta pro více zpracování vytvořena v určené adrese paměti, může být použita k přenosu odlišných dat mezi dvěma nebo více běžícími procesy.







Příklad 2: Použití metody „Qsize()“ k určení velikosti fronty pro více zpracování v Pythonu

V tomto případě určujeme velikost fronty pro více zpracování. K výpočtu velikosti fronty pro více zpracování používáme metodu „qsize()“. Funkce „qsize()“ vrací skutečnou velikost fronty multiprocesingu Pythonu. Jinými slovy, tato metoda poskytuje celkový počet položek ve frontě.

Začněme tím, že před spuštěním kódu naimportujeme modul multiprocessingu Python jako „m“. Potom pomocí příkazu „m.queue()“ vyvoláme funkci „queue()“ pro více zpracování a výsledek vložíme do proměnné „Queue“. Poté pomocí metody „put()“ přidáme položky do fronty na následujícím řádku. Tato metoda se používá k přidání dat do fronty. Metodou „put()“ proto zavoláme „Queue“ a jako její prvek v závorce dodáme celá čísla. Čísla, která přidáváme, jsou „1“, „2“, „3“, „4“, „5“, „6“ a „7“ pomocí funkcí „put()“.



Kromě toho pomocí „Queue“ k získání velikosti fronty pro více zpracování nazýváme „qsize()“ s frontou pro více zpracování. Poté do nově vytvořené proměnné „result“ uložíme výsledek metody „qsize()“. Poté zavoláme metodu „print()“ a jako její parametr předáme příkaz „Velikost fronty pro více zpracování je“. Dále zavoláme proměnnou „result“ ve funkci „print()“, protože velikost je uložena v této proměnné.


Výstupní obrázek má zobrazenou velikost. Když používáme funkci „put()“ k přidání sedmi prvků do fronty pro více zpracování a funkci „qsize()“ k určení velikosti, zobrazí se velikost fronty pro více zpracování „7“. Před velikostí je uveden vstupní příkaz „velikost fronty pro více zpracování“.

Příklad 3: Použití metod „Put()“ a „Get()“ ve frontě pro více zpracování Pythonu

V tomto příkladu jsou použity metody fronty „put()“ a „get()“ z fronty multiprocesingu Pythonu. V tomto příkladu vyvíjíme dvě uživatelsky definované funkce. V tomto příkladu definujeme funkci pro vytvoření procesu, který produkuje „5“ náhodných celých čísel. K jejich přidání do fronty používáme také metodu „put()“. K umístění položek do fronty se používá metoda „put()“. Poté, abychom získali čísla z fronty a vrátili jejich hodnoty, napíšeme další funkci a zavoláme ji během procedury. K získání čísel z fronty používáme funkci „get()“, protože tato metoda se používá k načtení dat z fronty, která vkládáme pomocí metody „put()“.

Nyní začněme implementovat kód. Nejprve importujeme čtyři knihovny, které tvoří tento skript. Nejprve importujeme „spánek“ z časového modulu, abychom zpozdili provedení o nějakou dobu měřenou v sekundách, následuje „náhodný“ z náhodného modulu, který se používá ke generování náhodných čísel, a poté „proces“ z multiprocesingu, protože tento kód vytváří proces a konečně „fronta“ z multiprocesingu. Po počátečním vytvoření instance třídy lze frontu použít. Ve výchozím nastavení se tím vytvoří nekonečná fronta nebo fronta bez maximální velikosti. Nastavením možnosti maximální velikosti na číslo, které je větší než nula, je možné vytvořit výtvor s omezením velikosti.


Definujeme funkci. Poté, protože je tato funkce definovaná uživatelem, dáme jí název „function1“ a jako její argument předáme termín „queue“. Poté vyvoláme funkci „print()“ a předáme jí příkazy „builder: Running“, „flush“ a objekt „True“. Funkce tisku Pythonu má jedinečnou možnost nazvanou flush, která uživateli umožňuje zvolit, zda tento výstup uložit do vyrovnávací paměti. Dalším krokem je vygenerování úkolu. K tomu použijeme „for“ a vytvoříme proměnnou „m“ a nastavíme rozsah na „5“. Poté na dalším řádku použijte „random()“ a výsledek uložte do námi vytvořené proměnné, která je „value“. To znamená, že funkce nyní dokončí svých pět iterací, přičemž každá iterace vytvoří náhodné celé číslo od 0 do 5.

Poté v následujícím kroku zavoláme funkci „sleep()“ a předáme argument „value“, abychom zdrželi část o určitý počet sekund. Poté zavoláme „frontu“ pomocí metody „put()“, abychom v podstatě přidali hodnotu do fronty. Uživatel je poté informován, že již není třeba provádět žádnou další práci, a to opětovným vyvoláním metody „queue.put()“ a předáním hodnoty „None“. Poté spustíme metodu „print()“, předáme příkaz „builder: ready“ spolu s „flush“ a nastavíme jej na „True“.


Nyní definujeme druhou funkci, „function2“, a přiřadíme jí klíčové slovo „queue“ jako její argument. Poté zavoláme funkci „print()“ a předáme stavy zprávy „Uživatel: běží“ a „vyprázdnit“, což je nastaveno na „True“. Operaci funkce „function2“ zahájíme pomocí podmínky while true k odebrání dat z fronty a jejich uložení do nově vytvořené proměnné „item“. Potom použijeme podmínku „if“, „položka je žádná“, k přerušení cyklu, pokud je podmínka pravdivá. Pokud není k dispozici žádná položka, zastaví se a požádá uživatele o jednu. Úloha zastaví smyčku a skončí v tomto případě, pokud je položka získaná z hodnoty null. Poté v následujícím kroku zavoláme funkci „print()“ a poskytneme jí zprávu „User: ready“ a parametry „flush=True“.


Poté vstoupíme do hlavního procesu pomocí „If-name = main_“. Frontu vytvoříme voláním metody „queue()“ a jejím uložením do proměnné „queue“. Dále vytvoříme proces voláním uživatelské funkce „funkce2“. Za tímto účelem nazýváme třídu „proces“. Uvnitř předáme „target=function2“ pro volání funkce v procesu, předáme argument „queue“ a uložíme jej do proměnné „User_process“. Proces pak začne voláním metody „start()“ s proměnnou „User_ process“. Poté opakujeme stejný postup, abychom v procesu zavolali „funkci1“ a vložili ji do proměnné „proces stavitele“. Poté zavoláme procesy pomocí metody „join()“, abychom počkali na provedení.


Nyní, když je uvedena, můžete ve výstupu vidět příkazy obou funkcí. Zobrazuje položky, které jsme přidali pomocí metod „put()“ a „get()“ pomocí metod „get()“.

Závěr

V tomto článku jsme se dozvěděli o frontě multiprocessingu v Pythonu. Použili jsme uvedené ilustrace. Nejprve jsme popsali, jak vytvořit frontu v multiprocesingu Pythonu pomocí funkce queue(). Poté jsme použili metodu „qsize()“ k určení fronty. Použili jsme také metody put() a get() fronty. Třída spánku časového modulu a náhodná třída náhodného modulu byly obě diskutovány v posledním příkladu.