Filetare în Python: Aflați cum să lucrați cu fire în Python



Acest articol despre Threading în Python vă va spune ce sunt Threads, tipurile sale, cum să le porniți și să le utilizați în cel mai bun mod posibil

Astăzi, este unul dintre cele mai iubite limbaje de programare din întreaga lume. De la înființarea sa în anii 1990, a adunat un număr mare de pasionați și entuziaști și programatori care lucrează zilnic pentru a îmbunătăți acest limbaj de programare. Printre numeroasele caracteristici care vin încorporate în ecosistemul Python, una care se remarcă cel mai mult este Threading. Prin urmare, în acest articol, vom vorbi despre Threading în Python, despre modul în care îl puteți folosi împreună cu avantajele și dezavantajele sale.

Următoarele indicații vor fi tratate în acest articol,





Să începem

Filetarea în Python

Ce este un fir în Python?

Un fir în Python poate fi pur și simplu definit ca un flux separat de execuție. Ce înseamnă pur și simplu că în programul dvs., vor fi executate două procese diferite în același timp. Un aspect interesant al filetării în Python este faptul că, după versiunea 3, mai multe fire din Python nu sunt executate în același timp, ci doar apar.



bucătarul este un instrument de orchestrație

Deși este un sentiment uimitor să rulați două procese diferite în același timp, trebuie să înțelegeți că versiunea actuală a Python 3 și versiunile ulterioare este codificată în așa fel, încât numai procesul poate fi rulat în orice moment dat. Cu toate acestea, dacă aveți nevoie de două sau mai multe procese împreună în același timp în CPython, trebuie să codificați o parte din codul dvs. și în alte limbi, cum ar fi C, C ++ și Java, și apoi să le rulați prin multi threading în Python.

Unul dintre cele mai cunoscute avantaje ale filetării în Python este capacitatea sa de a oferi un câștig în claritatea proiectării.

Înainte de asta, avem o idee despre Threading în Python, să ne înțelegem cum să începem un thread,



Pornirea unui subiect în Python

Acum că sunteți obișnuiți cu definiția unui fir în Python, haideți să aruncăm o privire la un exemplu despre cum puteți crea propriul fir în Python. Pentru a crea un fir în Python, trebuie mai întâi să importați biblioteca de fire și apoi să-i instruiți să pornească () așa cum se arată în exemplul de mai jos:

import jurnal import filetare import timp def filă_funcție (nume): logging.info ('Fir% s: pornire', nume) time.sleep (2) logging.info ('Fir% s: finisare', nume) dacă __nume__ == '__main__': format = '% (asctime) s:% (mesaj) s' logging.basicConfig (format = format, nivel = logging.INFO, datefmt = '% H:% M:% S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp: înainte de a crea firul') x = threading.Thread (target = thread_function, args = (1,)) logging.info ('Main & ampampampnbsp & ampampampnbsp: înainte de a rula thread') x.start () logging.info ('Main & ampampampnbsp & ampampampnbsp: așteptați finalizarea firului ') # x.join () logging.info (' Main & ampampampnbsp & ampampampnbsp: totul gata ')

Ieșire

Ieșire - Filetare în Python - Edureka

Când rulați un fir în Python, îl transmiteți ca o funcție care conține o listă de argumente pe care trebuie să le execute. În exemplul partajat mai sus, îi instruiți pe Python să ruleze firul, thread_function () și să îl transmită la 1 ca argument.

Când rulați programul de mai sus, ieșirea va arăta cam așa.

Următorul fragment al acestui articol despre „Filetarea în Python” ne permite să vedem ce sunt firele de demoni,

Ce sunt firele Daemon?

În terminologia tehnică, demonul poate fi definit ca un proces care se execută în principal în fundal. Cu toate acestea, în Python, un fir de demon are o semnificație foarte specifică. În Python, un fir de demon se va închide în momentul în care programul a ieșit, deși în alte limbaje de programare va continua să ruleze în fundal. Dacă într-un anumit program, un fir nu este programat ca fiind un fir demon, atunci interpretul va aștepta ca acesta să-și termine operațiunea și apoi să oprească numai interpretul.

Pentru a înțelege mai bine acest concept, aruncați o privire la exemplul de mai sus. În ultima a doua linie, programul așteaptă câteva secunde după ce și-a terminat toate sarcinile. Acest lucru se datorează faptului că așteaptă ca firul nemonemon să își termine operațiunea și apoi să părăsească interfața. Odată ce firul își termină funcționarea, atunci programul iese doar.

Acum, să modificăm programul de mai sus și să vedem ce se întâmplă, dacă introducem un fir de demon în cod.

Cod nou: x = threading.Thread (target = thread_function, args = (1,), daemon = True)

Când rulați programul de mai sus cu modificările făcute, va arăta cam așa.

Diferența dintre aceste două ieșiri este că linia finală lipsește din cea mai recentă. Funcția thread_function () nu a avut nicio șansă să se finalizeze, deoarece am inserat un thread demon și, pe măsură ce a ajuns curând la sfârșit, a ieșit din program.

Alăturarea unui subiect

Acum, că ați aflat despre conceptul de a crea un thread în Python, împreună cu conceptul de thread daemonic, permiteți-ne să descoperim cum puteți uni fire în Python.

diferența dintre finalul final și finalizarea în java

Folosind funcția join () în Python puteți asocia două fire diferite și, de asemenea, puteți instrui unul să aștepte celălalt până când își termină execuția. Această caracteristică va fi de multe ori utilă atunci când codificați aplicații mari și aveți nevoie de toate procesele pentru a fi executate într-o anumită ordine

Ultima parte a acestui articol despre „Filetarea în Python” vă va arăta firele multiple de lucru,

Lucrul cu mai multe fire

În exemplele de mai sus am vorbit despre modul în care puteți lucra cu două fire simultan. Dar ce se întâmplă dacă într-o anumită situație, trebuie să lucrați cu mai multe fire în același timp. Pentru o mai bună înțelegere a situației, aruncați o privire la exemplul de mai jos.

import jurnal import filetare import timp def filă_funcție (nume): logging.info ('Fir% s: pornire', nume) time.sleep (2) logging.info ('Fir% s: finisare', nume) dacă __nume__ == '__main__': format = '% (asctime) s:% (mesaj) s' logging.basicConfig (format = format, nivel = logging.INFO, datefmt = '% H:% M:% S') fire = list ( ) pentru index în intervalul (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 () pentru index, thread în enumerate (threads): logging.info ('Main & ampampampnbsp & ampampampnbsp: înainte de a alătura thread% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d făcut ', index)

Ieșire

În programul de mai sus am urmat aceeași procedură de importare a bibliotecii de fire, pornirea firului, crearea mai multor fire și apoi utilizarea funcției join () pentru a combina toate împreună și a fi executate într-o anumită ordine.

Când rulați programul de mai sus, rezultatul va arăta cam așa.

Concluzie

Este una dintre cele mai la îndemână caracteristici ale Python. Folosindu-l în mod corect, puteți face întregul proces de codificare mult mai ușor și mai eficient. Din articolul de mai sus, sperăm că ați învățat elementele de bază ale filetării și veți continua să îl utilizați în programarea dvs. de zi cu zi.

Deci asta este băieții, sper că v-a plăcut acest articol.

Pentru a obține cunoștințe aprofundate despre Python împreună cu diferitele sale aplicații, puteți pentru instruire online live cu asistență 24/7 și acces pe viață.

Ai o întrebare pentru noi? Menționați-le în secțiunea de comentarii a acestui articol și vă vom răspunde.