Python Multiprocessing Queue

Python Multiprocessing Queue



Az adatstruktúra legfontosabb eleme a sor. A Python multiprocessing alapját képező „first in, first out” adatstruktúra-sor összehasonlítható. A folyamat funkcióhoz sorok állnak rendelkezésre, amelyek lehetővé teszik a folyamat számára az adatok gyűjtését. A sorból elsőként törölendő adat az elsőként beírandó adat. A sor „put()” metódusát használjuk az adatok hozzáadásához a sorhoz, a „get()” metódusát pedig az adatok lekéréséhez a sorból.

1. példa: A Queue() módszer használata többfeldolgozós sor létrehozására Pythonban

Ebben a példában többfeldolgozó sort hozunk létre Pythonban a „queue()” metódussal. A multiprocessing egy vagy több CPU használatát jelenti egy rendszerben két vagy több folyamat egyidejű végrehajtására. A Multiprocessing, a Pythonban felépített modul, megkönnyíti a folyamatok közötti váltást. Meg kell ismernünk a folyamat tulajdonságait, mielőtt többfeldolgozással dolgoznánk. Tisztában vagyunk vele, hogy a várólista az adatmodell kulcsfontosságú összetevője. A szabványos adatsor, amely a „First-In-First-Out” ötletre épül, és a Python multiprocessing pontos megfelelői. Általában a várólista tárolja a Python objektumot, és kulcsfontosságú a feladatok közötti adatátvitelhez.







A „spyder” eszköz a jelen Python-szkript megvalósítására szolgál, tehát egyszerűen kezdjük. Először importálnunk kell a többfeldolgozó modult, mert a Python többfeldolgozó parancsfájlt futtatjuk. Ezt úgy tettük meg, hogy a többfeldolgozó modult „m”-ként importáltuk. Az „m.queue()” technikával meghívjuk a többfeldolgozó „queue()” metódust. Itt létrehozunk egy „queue” nevű változót, és elhelyezzük benne a többfeldolgozó „queue()” metódust. Mivel tudjuk, hogy a sorban a tételeket „first in, first-out” sorrendben tároljuk, először az elsőként hozzáadott tétel kerül eltávolításra. A multiprocessing queue elindítása után meghívjuk a „print()” metódust, és argumentumként a „There are a multiprocessing queue” utasítást adjuk át a képernyőn való megjelenítéshez. Ezután, mivel ebben a változóban tároljuk a megszerkesztett sort, a „print()” metódus zárójelében lévő „queue” változó átadásával nyomtatjuk ki a sort.




A következő kép azt mutatja, hogy a Python többfeldolgozó sor most elkészült. Először a nyomtatott nyilatkozat jelenik meg. Miután ez a többfeldolgozó sor létrejött a kijelölt memóriacímen, felhasználható a különböző adatok átvitelére két vagy több futó folyamat között.







2. példa: A „Qsize()” módszer használata a Python többfeldolgozási sor méretének meghatározására

Ebben az esetben meghatározzuk a többfeldolgozási sor méretét. A többfeldolgozási sor méretének kiszámításához a „qsize()” metódust használjuk. A „qsize()” függvény a Python többfeldolgozási sor valós méretét adja vissza. Más szavakkal, ez a módszer megadja a sorban lévő elemek teljes számát.

Kezdjük azzal, hogy a kód futtatása előtt importáljuk a Python többfeldolgozó modult „m”-ként. Ezután az „m.queue()” paranccsal meghívjuk a többfeldolgozó „queue()” függvényt, és az eredményt a „Queue” változóba helyezzük. Ezután a „put()” metódussal a következő sorban hozzáadjuk az elemeket a sorhoz. Ezzel a módszerrel az adatok sorhoz adhatók. Ezért a „Queue”-t a „put()” metódussal hívjuk meg, és ennek elemeként adjuk meg az egész számokat a zárójelben. Az általunk hozzáadott számok a következők: „1”, „2”, „3”, „4”, „5”, „6” és „7” a „put()” függvényekkel.



Továbbá a „Queue” használatával a többfeldolgozó sor méretének meghatározásához a „qsize()”-t a többfeldolgozó sorral együtt hívjuk meg. Ezután az újonnan létrehozott „result” változóban elmentjük a „qsize()” metódus eredményét. Ezután meghívjuk a „print()” metódust, és paraméterként a „A többfeldolgozási sor mérete” utasítást adjuk át. Ezután a „print()” függvényben a „result” változót hívjuk meg, mivel a méret ebben a változóban van elmentve.


A kimeneti kép mérete megjelenik. Mivel a „put()” függvény segítségével hét elemet adunk a többfeldolgozási sorhoz, a „qsize()” függvényt pedig a méret meghatározásához, a többfeldolgozó sor „7” mérete jelenik meg. A méret előtt megjelenik a „többfeldolgozási sor mérete” beviteli utasítás.

3. példa: A „Put()” és a „Get()” metódusok használata a Python többfeldolgozási sorában

Ebben a példában a Python többfeldolgozási sorból származó „put()” és „get()” sormetódusokat használjuk. Ebben a példában két felhasználó által definiált függvényt dolgozunk ki. Ebben a példában definiálunk egy függvényt egy olyan folyamat létrehozására, amely „5” véletlenszerű egész számot állít elő. A „put()” metódussal is hozzáadjuk őket egy sorhoz. A „put()” metódus az elemek sorba helyezésére szolgál. Ezután a számok lekéréséhez a sorból és értékük visszaadásához írunk egy másik függvényt, és az eljárás során meghívjuk. A „get()” függvényt használjuk a számok lekérésére a sorból, mivel ezt a módszert használjuk az adatok lekérésére a sorból, amelyeket a „put()” metódussal szúrunk be.

Most kezdjük el a kód implementálását. Először is importáljuk a négy könyvtárat, amelyek ezt a szkriptet alkotják. Először az időmodulból importáljuk az „alvás” állapotot, hogy késleltesse a végrehajtást másodpercekben mérve, ezt követi a „random” a véletlenszerű modulból, amely véletlen számok generálására szolgál, majd a „feldolgozás” a többfeldolgozásból, mert ez a kód egy folyamatot hoz létre. , és végül a többfeldolgozásból származó „várólista”. Egy osztálypéldány kezdeti felépítésével a várólista használható. Alapértelmezés szerint ez egy végtelen vagy maximális méret nélküli sort hoz létre. Ha a max size opciót nullánál nagyobb számra állítja, lehetőség nyílik méretkorlátozásos alkotás létrehozására.


Meghatározunk egy függvényt. Ezután, mivel ez a függvény felhasználó által definiált, a „function1” nevet adjuk neki, és argumentumként a „queue” kifejezést adjuk át. Ezt követően meghívjuk a „print()” függvényt, átadva neki a „builder: Running”, „flush” és a „True” objektum utasításait. A Python nyomtatási funkciója rendelkezik egy flush nevű egyedi opcióval, amely lehetővé teszi a felhasználó számára, hogy eldöntse, puffereli-e ezt a kimenetet. A következő lépés a feladat generálása. Ehhez a „for” kifejezést használjuk, létrehozzuk az „m” változót, és a tartományt „5”-re állítjuk. Ezután a következő sorban használja a „random()” parancsot, és tárolja az eredményt az általunk létrehozott változóban, amely az „érték”. Ez azt jelzi, hogy a függvény most befejezi öt iterációját, és minden iteráció egy véletlenszerű egész számot hoz létre 0 és 5 között.

Ezután a következő lépésben meghívjuk a „sleep()” függvényt, és átadjuk az „érték” argumentumot, hogy késleltesse a részt egy bizonyos számú másodpercig. Ezután meghívjuk a „queue”-t a „put()” metódussal, hogy lényegében hozzáadjuk az értéket a sorhoz. Ezután a felhasználót a „queue.put()” metódus ismételt meghívásával és a „Nincs” érték átadásával értesítjük, hogy nincs további teendő. Ezután futtatjuk a „print()” metódust, átadjuk a „builder: ready” utasítást a „flush”-val együtt, és „True”-ra állítjuk.


Most meghatározunk egy második függvényt, a „function2”-t, és hozzárendeljük a „queue” kulcsszót argumentumként. Ezután meghívjuk a „print()” függvényt, miközben a jelentésben a „Felhasználó: Fut” és a „flush” állapotokat adjuk át, amelyek értéke „Igaz”. Elindítjuk a „function2” műveletét a while true feltétellel, hogy az adatokat kivesszük a sorból és az újonnan létrehozott „item” változóba helyezzük. Ezután az „if” feltételt használjuk, az „elem nincs” a ciklus megszakításához, ha a feltétel igaz. Ha nincs elérhető elem, leáll, és kér egyet a felhasználótól. A feladat ebben az esetben leállítja a ciklust és véget ér, ha az értékből kapott elem nulla. Ezután a következő lépésben meghívjuk a “print()” függvényt, és megadjuk neki a “User: ready” jelentést és a “flush=True” paramétereket.


Ezután belépünk a fő folyamatba az „If-name = main_” használatával. A „queue()” metódus meghívásával és a „queue” változóban tárolva hozunk létre egy sort. Ezután létrehozunk egy folyamatot a „function2” felhasználói függvény meghívásával. Ehhez a „folyamat” osztályt nevezzük. Ezen belül átadjuk a „target=function2”-t a függvény meghívásához a folyamatban, átadjuk a „queue” argumentumot, és tároljuk a „User_process” változóban. A folyamat ezután a „start()” metódus meghívásával kezdődik a „User_process” változóval. Ezután megismételjük ugyanazt az eljárást, hogy meghívjuk a „function1”-et a folyamatban, és betesszük a „builder process” változóba. Ezután a folyamatokat a „join()” metódussal hívjuk meg, hogy megvárják a végrehajtást.


Most, hogy megjelenik, láthatja mindkét függvény utasításait a kimenetben. Megjeleníti azokat az elemeket, amelyeket a „put()”, illetve a „get()” metódusokkal adtunk hozzá.

Következtetés

Ebben a cikkben tanultunk a Python többfeldolgozási soráról. A megadott illusztrációkat használtuk. Először azt írtuk le, hogyan hozható létre sor Python multiprocessing-ban a queue() függvény használatával. Ezután a „qsize()” módszert használtuk a sor meghatározásához. Használtuk a sor put() és get() metódusait is. Az utolsó példában az időmodul alvási osztályát és a véletlenszerű modul véletlenszerű osztályát is tárgyaltuk.