Threading v Pythonu: Naučite se delati z nitmi v Pythonu



Ta članek o Threading v Pythonu vam bo povedal, kaj so Threads, njihove vrste, kako jih zagnati in uporabiti na najboljši možen način

Danes je eden izmed najbolj priljubljenih programskih jezikov po vsem svetu. Od svoje ustanovitve v devetdesetih letih je zbral ogromno sledilcev in navdušencev in programerjev, ki si vsak dan prizadevajo za izboljšanje tega programskega jezika. Med številnimi funkcijami, ki so vgrajene v ekosistem Python, najbolj izstopa Threading. Zato bomo v tem članku govorili o Threading v Pythonu, kako ga lahko izkoristite skupaj z njegovimi prednostmi in slabostmi.

V tem članku bodo zajeti naslednji napotki:





Začnimo

Niti v Pythonu

Kaj je nit v Pythonu?

Nit v Pythonu lahko preprosto definiramo kot ločen potek izvajanja. To preprosto pomeni, da se bosta v vašem programu hkrati izvedla dva različna procesa. Zanimiv vidik navojev v Pythonu je dejstvo, da se po različici 3 več niti v Pythonu ne izvaja hkrati, ampak se le zdi.



Čeprav je neverjeten občutek hkrati izvajati dva različna procesa, je treba razumeti, da je trenutna različica Pythona 3 in novejših kodirana na tak način, da je mogoče v katerem koli trenutku zagnati samo proces. Če pa morate v CPythonu hkrati uporabiti dva ali več procesov hkrati, morate kodo kodirati tudi v druge jezike, kot so C, C ++ in Java, in jih nato v Pythonu zagnati z več nitmi.

Ena najbolj znanih prednosti navojev v Pythonu je njegova sposobnost zagotavljanja jasnosti oblikovanja.

Pred tem imamo nekaj ideje o Threading v Pythonu, dajmo razumeti, kako začeti nit,



kako sestaviti kode java -

Zagon niti v Pythonu

Zdaj, ko ste navajeni na definicijo niti v Pythonu, si oglejmo primer, kako lahko v Pythonu ustvarite svojo nit. Če želite v Pythonu ustvariti nit, morate najprej uvoziti knjižnico niti in ji nato naročiti, naj se zažene (), kot je prikazano v spodnjem primeru:

uvoz dnevnik beleženje uvozna nit navozi čas def nit_function (ime): logging.info ('Nit% s: zagon', ime) time.sleep (2) logging.info ('Nit% s: zaključna', ime) če __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp: pred ustvarjanjem niti') x = navoj.Nit (target = thread_function, args = (1,)) logging.info ('Main & ampampampnbsp & ampampampnbsp: pred izvajanjem niti') x.start () logging.info ('Main & ampampampnbsp & ampampampnbsp: počakajte, da se nit konča ') # x.join () logging.info (' Main & ampampampnbsp & ampampampnbsp: all done ')

Izhod

Izhod - navoj v Pythonu - Edureka

Ko zaženete nit v Pythonu, jo posredujete kot funkcijo, ki vsebuje seznam argumentov, ki jih mora izvesti. V zgornjem primeru, ki ga delite z drugimi, Pythonu naročite, naj zažene nit, thread_function () in jo kot argument posreduje na 1.

Ko zaženete zgornji program, bo rezultat videti približno tako.

Naslednji del tega članka o 'Threading in Python' poglejmo, kaj so niti demona,

Kaj so Daemon Threads?

V tehnični terminologiji lahko demon definiramo kot postopek, ki pretežno deluje v ozadju. Vendar ima v Pythonu nit demona zelo specifičen pomen. V Pythonu se bo demon demon zaustavil v trenutku, ko bo program zapustil, čeprav se bo v drugih programskih jezikih še naprej zaganjal v ozadju. Če v določenem programu nit ni programirana kot nit demona, bo tolmač počakal, da bo končal svoje delovanje, nato pa bo tolmač izključil.

Da bi bolje razumeli ta koncept, si oglejte zgornji primer. V drugi zadnji vrstici program počaka nekaj sekund po zaključku vseh nalog. To je zato, ker čaka, da ne-demonska nit konča svoje delovanje in nato zapusti vmesnik. Ko nit konča svoje delovanje, program zapre šele.

Zdaj spremenimo zgornji program in poglejmo, kaj se bo zgodilo, če v kodo vstavimo nit demona.

Nova koda: x = navoj. Nit (cilj = funkcija_navoja, args = (1,), daemon = True)

Ko zaženete zgornji program z izvedenimi spremembami, bo videti približno tako.

Razlika med tema izhodoma je v tem, da zadnja vrstica manjka v zadnji. Thread_function () ni dobil priložnosti za dokončanje, ker smo vstavili nit demona in kmalu je prišel do konca, je zapustil program.

Pridružitev niti

Zdaj, ko ste spoznali koncept ustvarjanja niti v Pythonu, skupaj s konceptom demonske niti, naj odkrijemo, kako lahko niti pridružite v Pythonu.

kaj pomeni __init__ v pythonu

Z uporabo funkcije join () v Pythonu lahko združite dve različni niti in enemu tudi naročite, naj počaka na drugo, dokler ne zaključi izvajanja. Ta funkcija vam bo pogosto prišla prav, ko kodirate velike programe in potrebujete, da se vsi procesi izvedejo v določenem vrstnem redu

Zadnji del tega članka o »Threading in Python« vam bo pokazal delujoče več niti,

Delo z več nitmi

V zgornjih primerih smo govorili o tem, kako lahko delate z dvema nitoma hkrati. Kaj pa, če morate v določeni situaciji hkrati delati z več nitmi. Za boljše razumevanje situacije si oglejte spodnji primer.

preglasitev in preobremenitev v javi
uvoz dnevnik beleženje uvozna nit navozi čas def nit_function (ime): logging.info ('Nit% s: zagon', ime) time.sleep (2) logging.info ('Nit% s: zaključna', ime) če __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') niti = seznam ( ) za indeks v obsegu (3): logging.info ('Glavni & ampampampnbsp & ampampampnbsp: ustvari in zaženi nit% d.', indeks) x = navoj. nit (target = thread_function, args = (index,)) niti ) x.start () za indeks, nit v enumerate (niti): logging.info ('Main & ampampampnbsp & ampampampnbsp: preden se pridružite niti% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d končano ', kazalo)

Izhod

V zgornjem programu smo sledili enakemu postopku uvoza knjižnice niti, zagon niti, ustvarjanje več niti in nato s funkcijo join () združimo vse skupaj in jih izvedemo v določenem vrstnem redu.

Ko zaženete zgornji program, bo rezultat videti približno tako.

Zaključek

To je ena najbolj uporabnih lastnosti Pythona. S pravilno uporabo lahko celoten postopek kodiranja naredite veliko lažji in učinkovitejši. Iz zgornjega članka upamo, da ste se naučili osnov navojev in jih boste še naprej uporabljali pri vsakodnevnem programiranju.

Torej to je to, fantje, upam, da vam je bil ta članek všeč.

Če želite pridobiti poglobljeno znanje o Pythonu skupaj z različnimi aplikacijami, lahko za spletno usposabljanje v živo s podporo 24 ur na dan in 7 dni v tednu.

Imate vprašanje za nas? Omenite jih v oddelku za komentarje tega članka in odgovorili vam bomo.