Vlákna v Pythone: Naučte sa, ako pracovať s vláknami v Pythone



Tento článok o témach Thread v Pythone vám povie, čo sú vlákna, ich typy, ako ich spustiť a čo najlepšie využiť

Dnes je jedným z najobľúbenejších programovacích jazykov na celom svete. Od svojho založenia v 90. rokoch si získal obrovské množstvo priaznivcov a programátorov, ktorí každý deň pracujú na vylepšovaní tohto programovacieho jazyka. Medzi mnohými funkciami, ktoré sú zabudované v ekosystéme Python, vyniká najviac Threading. Preto si v tomto článku povieme všetko o Threading v Pythone, ako ho môžete využiť spolu s jeho výhodami a nevýhodami.

V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi,





Začnime

ako nainštalovať php 7

Vlákna v Pythone

Čo je vlákno v Pythone?

Vlákno v Pythone možno jednoducho definovať ako samostatný tok vykonávania. Čo to znamená jednoducho, že vo vašom programe budú súčasne vykonané dva rôzne procesy. Jedným zaujímavým aspektom vytvárania vlákien v Pythone je skutočnosť, že po verzii 3 sa viac vlákien v Pythone nevykonáva súčasne, ale iba sa zdá.



Aj keď je úžasné prevádzkovať dva rôzne procesy súčasne, je potrebné pochopiť, že súčasná verzia Pythonu 3 a vyššie je kódovaná takým spôsobom, že v danom okamihu je možné spustiť iba proces. Ak však potrebujete v CPythone dva alebo viac procesov súčasne, musíte kódovať časť svojho kódu aj v iných jazykoch, ako sú C, C ++ a Java, a potom ich spustiť prostredníctvom viacerých vlákien v Pythone.

Jednou z najznámejších výhod vlákien v Pythone je jeho schopnosť získať jasnosť v dizajne.

Predtým, ako budeme mať nejakú predstavu o vláknach v Pythone, poďme pochopiť, ako založiť vlákno,



Založenie vlákna v Pythone

Teraz, keď ste zvyknutí na definíciu vlákna v Pythone, sa pozrime na príklad, ako si môžete vytvoriť svoje vlastné vlákno v Pythone. Ak chcete vytvoriť vlákno v Pythone, musíte najskôr importovať knižnicu vlákien a potom jej dať pokyn na start (), ako je to znázornené v príklade nižšie:

import logovanie import vlákno import čas def thread_function (meno): logging.info ('vlákno% s: počiatočné', meno) time.sleep (2) loging.info ('vlákno% s: dokončovacie', meno) ak __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čkajte na dokončenie vlákna ') # x.join () logging.info (' Hlavné & ampampampnbsp & ampampampnbsp: všetko hotové ')

Výkon

Výstup - Threading v Pythone - Edureka

Keď spustíte vlákno v Pythone, odovzdáte ho ďalej ako funkciu, ktorá obsahuje zoznam argumentov, ktoré je potrebné vykonať. V príklade zdieľanom vyššie dávate Pythonu pokyn, aby spustil vlákno, thread_function () a odovzdal ho 1 ako argument.

Keď spustíte vyššie uvedený program, výstup bude vyzerať asi takto.

V ďalšej časti tohto článku s názvom „Threading in Python“ sa pozrime, čo sú vlákna démonov,

Čo sú vlákna Daemon?

V technickej terminológii možno démona definovať ako proces, ktorý primárne beží na pozadí. Avšak v Pythone má démonské vlákno veľmi špecifický význam. V Pythone sa vlákno démona vypne v okamihu ukončenia programu, aj keď v iných programovacích jazykoch bude naďalej bežať na pozadí. Ak v určitom programe vlákno nie je naprogramované ako vlákno démon, potom tlmočník počká, kým dokončí svoju činnosť, a potom iba tlmočník vypne.

Pre lepšie pochopenie tejto koncepcie si pozrite príklad vyššie. V druhom poslednom riadku program počká niekoľko sekúnd po dokončení všetkých svojich úloh. Je to preto, lebo čaká na to, kým nedémonické vlákno dokončí svoju činnosť a potom opustí rozhranie. Keď vlákno dokončí svoju činnosť, ukončí sa iba program.

Teraz upravíme vyššie uvedený program a uvidíme, čo sa stane, ak do kódu vložíme vlákno démona.

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

Keď spustíte vyššie uvedený program s vykonanými úpravami, bude vyzerať asi takto.

Rozdiel medzi týmito dvoma výstupmi je ten, že posledný riadok chýba. Vlákno_funkcia () nedostalo šancu na dokončenie, pretože sme vložili vlákno démona a hneď ako sa to dostalo na koniec, program opustilo.

Spojenie vlákna

Teraz, keď ste sa dozvedeli o koncepcii vytvárania vlákna v Pythone, spolu s konceptom démonického vlákna, poďme zistiť, ako môžete spojiť vlákna v Pythone.

Použitím funkcie join () v Pythone môžete spojiť dve rôzne vlákna a tiež dať jednému pokyn, aby počkal na druhé, kým nedokončí svoje vykonávanie. Táto vlastnosť sa vám často bude hodiť, keď kódujete veľké aplikácie a potrebujete, aby sa všetky procesy vykonávali v konkrétnom poradí

Posledná časť tohto článku venovaná téme „Threading in Python“ vám ukáže fungujúcich viacerých vlákien,

Práca s viacerými vláknami

Vo vyššie uvedených príkladoch sme hovorili o tom, ako môžete pracovať s dvoma vláknami naraz. Čo však v prípade, ak v určitej situácii musíte pracovať s viacerými vláknami súčasne. Pre lepšie pochopenie situácie si pozrite nasledujúci príklad.

import logovanie import vlákno import čas def thread_function (meno): logging.info ('vlákno% s: počiatočné', meno) time.sleep (2) loging.info ('vlákno% s: dokončovacie', meno) ak __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') vlákna = zoznam ( ) pre index v rozsahu (3): logging.info ('Hlavné a ampampampnbsp & ampampampnbsp: vytvoriť a spustiť vlákno% d.', index) x = závitovanie. Vlákno (target = thread_function, args = (index,)) threads.append (x ) x.start () pre index, vlákno v enumerate (threads): logging.info ('Main & ampampampnbsp & ampampampnbsp: before joining thread% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d hotovo ', index)

Výkon

Vo vyššie uvedenom programe sme postupovali podľa rovnakého postupu pri importovaní knižnice vlákien, spustení vlákna, vytvorení viacerých vlákien a následnom použití funkcie join () na kombinovanie všetkých prvkov a na vykonanie v konkrétnom poradí.

Keď spustíte vyššie uvedený program, výsledok bude vyzerať asi takto.

Záver

Je to jedna z najšikovnejších funkcií Pythonu. Ak ho použijete správnym spôsobom, môžete zjednodušiť a zefektívniť celý svoj proces kódovania. Z vyššie uvedeného článku dúfame, že ste sa naučili základy rezania závitov a budete ich naďalej používať v každodennom programovaní.

Takže toto sú chlapci, dúfam, že sa vám tento článok páčil.

Ak chcete získať podrobné informácie o Pythone a jeho rôznych aplikáciách, môžete pre živé online školenie s nepretržitou podporou a doživotným prístupom.

Máte na nás otázku? Uveďte ich v sekcii komentárov tohto článku a my sa vám ozveme.