Kaj je Mutithreading v Pythonu in kako to doseči?



Naučite se, kaj je večopravilnost v pythonu. Pojasnjuje tudi večnitnost, kako ustvariti niti, ne da bi ustvarili razred, tako da razširite razred Thread in ga ne razširite.

Čas je najpomembnejši dejavnik v življenju. Svet programiranja zaradi svoje pomembnosti ponuja različne trike in tehnike, ki vam bistveno pomagajo zmanjšati porabo časa in s tem povečati zmogljivost. Takšen pristop je večnitnost v Pythonu, ki je eden najpomembnejših konceptov, zajetih v .

Tu je kratek povzetek vseh glavnih predmetov, zajetih v tem članku:





Kaj je večopravilnost v Pythonu?
Kaj je nit?
Kaj je večnitnost v pythonu?
Kdaj uporabiti večnitnost v Pythonu?
Kako doseči večnitnost v Pythonu?
Kako ustvariti niti v Pythonu?

Prednosti uporabe večnitnosti v Pythonu



Za začetek najprej poskusimo razumeti večopravilnost, preden se začnemo učiti o večnitnosti v Pythonu.

Kaj je večopravilnost v Pythonu?

Večopravilnost je na splošno zmožnost sočasnega izvajanja več nalog. V tehničnem smislu se večopravilnost nanaša na zmožnost operacijskega sistema, da hkrati opravlja različne naloge. Na primer , v računalnik nekaj prenašate, poslušate pesmi in hkrati igrate igro itd. Vse te naloge sinhronizira isti OS. To ni nič drugega kot večopravilnost, ki vam ne samo prihrani čas, ampak tudi poveča produktivnost.

V OS obstajata dve vrsti večopravilnosti:



  • Na osnovi procesa
  • Na osnovi niti

kako pretvoriti v binarno datoteko v pythonu

V tem članku boste spoznavali Na osnovi niti večopravilnost oz Večnitnost .

Kaj je nit?

niti-večnitnost v python-edurekaNit je v bistvu neodvisen potek izvršitve. Posamezen postopek je lahko sestavljen iz več niti. Vsaka nit v programu izvaja določeno nalogo. Na primer, ko igrate igro, recimo FIFA v računalniku, je igra kot celota en sam postopek , vendar je sestavljen iz več niti, ki so odgovorne za predvajanje glasbe, sprejemanje vnosov uporabnika, sinhrono vodenje nasprotnika itd. Vse to so ločene niti, odgovorne za izvajanje teh različnih nalog v istem programu.

Vsak postopek ima eno nit, ki se vedno izvaja. To je glavna nit. Ta glavna nit dejansko ustvari predmete podrejene niti. Podrejeno nit začne tudi glavna nit. V tem članku vam bom nadalje pokazal, kako preveriti trenutno delujočo nit.

Torej, upam, da ste s tem jasno razumeli, kaj je nit. Nadaljujemo, poglejmo, kaj je večnitnost v Pythonu.

Kdaj uporabiti večnitnost v Pythonu?

Večnitnost je zelo koristna za prihranek časa in izboljšanje zmogljivosti, vendar je ni mogoče uporabiti povsod.
V prejšnjem primeru FIFA je glasbena nit neodvisna od niti, ki sprejme vaš vnos, nit, ki sprejme vaš vnos, pa neodvisno od niti, ki vodi vašega nasprotnika. Te niti delujejo neodvisno, ker niso medsebojno odvisne.

Zato lahko večnitnost uporabimo le, kadar odvisnost med posameznimi nitmi ne obstaja.

Ta članek nadalje prikazuje, kako lahko v Pythonu dosežete večnitnost.

Kako doseči večnitnost v Pythonu?

Večnitnost v Pythonu lahko dosežemo z uvozom datoteke navojem modul.

Pred uvozom tega modula ga boste morali namestiti. Če želite to namestiti v okolje anaconda, v pozivu anaconda izvedite naslednji ukaz:

kako narediti jframe v javi

conda install -c conda-forge tbb

Po uspešni namestitvi lahko uporabite katerega koli od naslednjih ukazov za uvoz modula za navoja:

uvoz navojev iz navojev uvoz *

Zdaj, ko imate nameščen modul za navoja, pojdimo naprej in izvedimo Multithreading v Pythonu.

Kako ustvariti niti v Pythonu?


Niti v Pythonu lahko ustvarite na tri načine:

  1. Brez ustvarjanja razreda
  2. Z razširitvijo razreda Thread
  3. Brez razširitve razreda Thread

Brez ustvarjanja razreda

Večnitnost v Pythonu je mogoče doseči tudi brez ustvarjanja razreda. Tu je primer, ki dokazuje isto:

Primer:

iz navojev uvoz * print (current_thread (). getName ()) def mt (): print ('Child Thread') child = Thread (target = mt) child.start () print ('Izvajanje imena niti:', current_thread ( ) .getName ())

Izhod:

Nadrejena nit MainThread Izvajanje imena niti: MainThread

Zgornji izhod kaže, da je prva nit, ki je prisotna, glavna nit. Ta glavna nit nato ustvari podrejeno nit, ki izvaja funkcijo, nato pa glavna nit ponovno izvrši končni stavek za tiskanje.

Zdaj pa pojdimo naprej in poglejmo, kako narediti Multithreading v pythonu z razširitvijo razreda Thread.

Z razširitvijo razreda Thread:

Ko se podrejeni razred ustvari z razširitvijo razreda Thread, podrejeni razred predstavlja, da nova nit izvaja neko nalogo. Pri razširitvi razreda Thread lahko podrejeni razred preglasi samo dve metodi, tj. Metodo __init __ () in metodo run (). Razen teh dveh metod ni mogoče preglasiti nobene druge metode.

Tu je primer, kako razširiti razred Thread, da ustvarite nit:

Primer:

uvozi navoje uvozni čas razreda mythread (threading.Thread): def run (self): za x in range (7): print ('Hi from child') a = mythread () a.start () a.join () print ('Adijo od', current_thread (). GetName ())

Izhod:
Živjo od otroka
Živjo od otroka
Živjo od otroka
Živjo od otroka
Živjo od otroka
Živjo od otroka
Živjo od otroka
Adijo od MainThread

Zgornji primer prikazuje, da razred myclass podeduje razred Thread in podrejeni razred, tj. Myclass prevlada nad metodo izvajanja. Privzeto mora biti prvi parameter katere koli funkcije razreda self, ki je kazalec na trenutni objekt. Izhod kaže, da podrejena nit izvrši metodo run () in glavna nit čaka, da se podrejena izvedba zaključi. To je posledica funkcije join (), zaradi katere glavna nit čaka, da se otrok konča.

java skript pojavno sporočilo

Ta način ustvarjanja niti je najbolj zaželena metoda, ker je standardna metoda. Če pa želite ustvariti niti, ne da bi podedovali ali razširili razred Thread, lahko to storite na naslednji način.

Brez razreda razširitve niti

Če želite ustvariti nit brez razširitve razreda Thread, lahko storite naslednje:
Primer:

from threading import * class ex: def myfunc (self): # potreben sam kot prvi parameter v funkciji razreda za x v obsegu (7): print ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('dokončano')

Izhod:

Otrok
Otrok
Otrok
Otrok
Otrok
Otrok
Otrok
Končano

Nadrejena nit izvede myfunc, po kateri glavna nit izvede zadnji stavek za tiskanje.

Prednosti uporabe navojev

Večnitnost ima številne prednosti, med katerimi so naslednje:

  • Boljša izraba virov
  • Poenostavlja kodo
  • Omogoča sočasno in vzporedno pojavljanje različnih nalog
  • Zmanjša porabo časa ali odzivni čas in s tem poveča zmogljivost.

Tu je primer, kako preveriti, kako dolgo traja izvajanje kode z in brez večnitnosti v pythonu:

 Primer: 
uvozni čas def sqr (n): za x v n: time.sleep (1) x% 2 def cube (n): za x v n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = time.time () sqr (n) kocka (n) e = time.time () print (s)

Izhod:

16.042309284210205

Zgoraj je izhodni čas, potreben za izvajanje programa brez uporabe niti. Zdaj pa uporabimo niti in poglejmo, kaj se zgodi z istim programom:

Primer:

uvoz navojev iz navojev uvoz * čas uvoza def sqr (n): za x v n: time.sleep (1) print ('Preostanek po delitvi z 2', x% 2) def cube (n): za x v n: time.sleep (1) print ('Preostanek po delitvi s 3', x% 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Nit ( target = sqr, args = (n,)) t2 = Thread (target = cube, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () end = time.time () print (end-start)
Izhod: 9.040220737457275

Zgornji izhod jasno kaže, da je čas, ko uporabljamo niti, veliko manjši kot čas, potreben za izvajanje istega programa brez uporabe niti.

Upam, da vam je jasno s koncepti, zajetimi v tem članku, ki se nanašajo na večnitnost v Pythonu. Vadite čim več, saj je to eden najpomembnejših konceptov, ki se uporabljajo pri programiranju.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika »Multithreading in Python«, mi pa volja čimprej se obrnite na vas.

Če želite pridobiti poglobljeno znanje o Pythonu skupaj z različnimi aplikacijami, se lahko prijavite v živo s 24-urno podporo in življenjskim dostopom.