Vlákna v Pythonu: Naučte se, jak pracovat s vlákny v Pythonu



Tento článek o vláknech v Pythonu vám řekne, co jsou vlákna, jejich typy, jak je spustit a co nejlépe je využít

Dnes, je jedním z nejoblíbenějších programovacích jazyků po celém světě. Od svého založení v 90. letech si získal obrovské množství příznivců a kodérů, kteří každý den pracují na vylepšování tohoto programovacího jazyka. Mezi mnoha funkcemi, které jsou součástí zabudovaného ekosystému Pythonu, je jedna, která nejvíce vyniká, Threading. Proto si v tomto článku povíme vše o Threadingu v Pythonu, jak jej můžete využít spolu s jeho výhodami a nevýhodami.

V tomto článku se budeme zabývat následujícími ukazateli,





Pojďme začít

výukový program pl sql pro začátečníky

Vlákna v Pythonu

Co je vlákno v Pythonu?

Vlákno v Pythonu lze jednoduše definovat jako samostatný tok provádění. Co to jednoduše znamená, že ve vašem programu budou spuštěny současně dva různé procesy. Jedním zajímavým aspektem vláken v Pythonu je skutečnost, že po verzi 3 se více vláken v Pythonu neprovádí současně, ale pouze se jim jeví.



I když je úžasný pocit provozovat současně dva různé procesy, je třeba si uvědomit, že aktuální verze Pythonu 3 a vyšší je kódována takovým způsobem, že v daném okamžiku lze spustit pouze proces. Pokud však potřebujete v CPythonu dva nebo více procesů současně, musíte kódovat i svůj kód v jiných jazycích, například v C, C ++ a Javě, a poté je spustit v Pythonu pomocí více vláken.

Jednou z nejznámějších výhod threadingu v Pythonu je jeho schopnost zajistit jas v designu.

Předtím máme nějakou představu o Threading v Pythonu, pojďme pochopit, jak spustit vlákno,



Spuštění vlákna v Pythonu

Nyní, když jste zvyklí na definici vlákna v Pythonu, pojďme se podívat na příklad, jak si můžete vytvořit vlastní vlákno v Pythonu. Chcete-li vytvořit vlákno v Pythonu, musíte nejprve importovat knihovnu vláken a poté ji instruovat, aby start (), jak je znázorněno v následujícím příkladu:

import protokolování importovat vlákno importovat čas def thread_function (name): logging.info ('Thread% s: starting', name) time.sleep (2) logging.info ('Thread% s: dokončovací', name) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp: before creating thread') x = threading.Thread (target = thread_function, args = (1,)) logging.info ('Main & ampampampnbsp & ampampampnbsp: before running thread') x.start () logging.info ('Main & ampampampnbsp & ampampampnbsp: počkejte na dokončení vlákna ') # x.join () logging.info (' Main & ampampampnbsp & ampampampnbsp: all done ')

Výstup

Výstup - Threading v Pythonu - Edureka

Když spustíte vlákno v Pythonu, předáte jej jako funkci, která obsahuje seznam argumentů, které potřebuje k provedení. V příkladu sdíleném výše dáváte Pythonu pokyn, aby spustil vlákno, thread_function () a předal jej 1 jako argument.

Když spustíte výše uvedený program, výstup bude vypadat nějak takto.

Další část tohoto článku na téma „Threading in Python“ nám umožní zjistit, co jsou vlákna démonů,

Co jsou vlákna Daemon?

V technické terminologii lze démona definovat jako proces, který primárně běží na pozadí. V Pythonu má ale démonské vlákno velmi specifický význam. V Pythonu se démonové vlákno vypne v okamžiku ukončení programu, i když v jiných programovacích jazycích bude i nadále fungovat na pozadí. Pokud v určitém programu není vlákno naprogramováno jako vlákno démona, pak tlumočník počká, až dokončí svou činnost, a potom tlumočníka pouze vypne.

Abyste lépe porozuměli tomuto pojetí, podívejte se na výše uvedený příklad. Ve druhém posledním řádku program čeká několik sekund poté, co dokončí všechny své úkoly. Důvodem je to, že čeká, než vlákno bez démonů dokončí svou činnost a poté opustí rozhraní. Jakmile vlákno dokončí svou činnost, ukončí se pouze program.

Nyní pojďme upravit výše uvedený program a uvidíme, co se stane, pokud do kódu vložíme vlákno démona.

Nový kód: x = threading.Thread (target = thread_function, args = (1,), daemon = True)

Když spustíte výše uvedený program s provedenými úpravami, bude vypadat asi takto.

Rozdíl mezi těmito dvěma výstupy spočívá v tom, že poslední řádek chybí od posledního. Vlákno_funkce () nedostalo šanci dokončit, protože jsme vložili vlákno démona a jakmile to dosáhlo konce, opustilo program.

Spojení vlákna

Nyní, když jste se dozvěděli o konceptu vytváření vlákna v Pythonu, spolu s konceptem démonického vlákna, pojďme zjistit, jak se můžete k vláknům v Pythonu připojit.

Pomocí funkce join () v Pythonu můžete spojit dvě různá vlákna a také instruovat jedno, aby počkalo na druhé, dokud nedokončí své provádění. Tato funkce se často hodí, když kódujete velké aplikace a potřebujete, aby byly všechny procesy provedeny v určitém pořadí

Poslední část tohoto článku o „Threading v Pythonu“ vám ukáže fungující více vláken,

Práce s více vlákny

Ve výše uvedených příkladech jsme hovořili o tom, jak můžete pracovat se dvěma vlákny najednou. Ale co když v určité situaci musíte pracovat s více vlákny najednou. Pro lepší pochopení situace se podívejte na níže uvedený příklad.

import protokolování importovat vlákno importovat čas def thread_function (name): logging.info ('Thread% s: starting', name) time.sleep (2) logging.info ('Thread% s: dokončovací', name) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') vlákna = seznam ( ) pro index v rozsahu (3): logging.info ('Main & ampampampnbsp & ampampampnbsp: create and start thread% d.', index) x = threading.Thread (target = thread_function, args = (index,)) threads.append (x ) x.start () pro index, vlákno ve výčtu (vlákna): logging.info ('Main & ampampampnbsp & ampampampnbsp: before joining thread% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d hotovo ', index)

Výstup

Ve výše uvedeném programu jsme postupovali stejným způsobem při importu knihovny vláken, spuštění vlákna, vytvoření více vláken a následném použití funkce join () ke kombinaci všech dohromady a provedení v určitém pořadí.

Po spuštění výše uvedeného programu bude výsledek vypadat přibližně takto.

Závěr

Je to jedna z nejšikovnějších funkcí Pythonu. Jeho správným způsobem můžete celý proces kódování výrazně zjednodušit a zefektivnit. Z výše uvedeného článku doufáme, že jste se naučili základy vláken a budete je nadále používat ve svém každodenním programování.

Takže tohle je, kluci, doufám, že se vám tento článek líbil.

Chcete-li získat podrobné znalosti o Pythonu a jeho různých aplikacích, můžete pro živé online školení s 24/7 podporou a celoživotním přístupem.

Máte na nás dotaz? Uveďte je v sekci komentářů tohoto článku a my se vám ozveme.