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,
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
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.