Mis on mutthreading Pythonis ja kuidas seda saavutada?



Siit saate teada, mis on pythonis multitegumtöötlus. Samuti selgitatakse mitmikeermelist lõimimist, kuidas lõime luua ilma klassi loomata, klassi Lõng laiendades ja pikendamata.

Aeg on elu kõige kriitilisem tegur. Tänu oma tähtsusele pakub programmeerimismaailm erinevaid trikke ja tehnikaid, mis aitavad oluliselt vähendada ajakulu ja suurendada seeläbi jõudlust. Üks selline lähenemine on Pythonis multithreading, mis on üks olulisemaid käsitletavaid mõisteid .

Siin on kiire kokkuvõte kõigist selles artiklis käsitletud peamistest ettevõtetest:





Mis on multitegumtöötlus Pythonis?
Mis on niit?
Mis on mitmikeermeline püthonis?
Millal kasutada Pythonis mitmikeermelist lugemist?
Kuidas saavutada Pythonis mitmikeermelist lugemist?
Kuidas luua Pythonis lõime?

sortige teeki c ++

Mitmikeermelise kasutamise eelised Pythonis



Alustuseks proovime kõigepealt mõista multitegumtöötlust, enne kui hakkame õppima Pythonis multithreadingu kohta.

Mis on Pythonis multitegumtöötlus?

Multitegumtöötlus on üldiselt võime täita mitu ülesannet samaaegselt. Tehnilises mõttes viitab multitegumtöötlus operatsioonisüsteemi võimele täita korraga erinevaid ülesandeid. Näiteks , laadite alla midagi oma arvutisse, kuulate lugusid ja mängite samaaegselt mängu jne. Kõiki neid toiminguid täidab sünkroonis sama OS. See pole midagi muud kui mitme tööülesanne, mis mitte ainult ei aita säästa aega, vaid suurendab ka tootlikkust.

OS-is on kahte tüüpi multitegumtöötlust:



  • Protsessipõhine
  • Niidipõhine

Selles artiklis saate teada Niidipõhine multitegumtöötlus või Mitmikeermeline .

Mis on niit?

threads-multithreading in python-edurekaLõng on põhimõtteliselt sõltumatu hukkamise voog. Üks protsess võib koosneda mitmest lõimest. Iga programmi lõim täidab teatud ülesannet. Näiteks, kui mängite mängu, öelge arvutis FIFA, on mäng tervikuna üks protsess , kuid see koosneb mitmest lõimest, mis vastutavad muusika mängimise, kasutaja sisendi võtmise, vastase sünkroonse käitamise eest jne. Kõik need on eraldi lõimed, mis vastutavad nende erinevate ülesannete täitmise eest samas programmis.

Igal protsessil on üks niit, mis töötab alati. See on peamine niit. See peamine lõime loob tegelikult lapsniidi objektid. Lapse lõime algatab ka peaniit. Näitan teile kõigile selles artiklis edasi, kuidas kontrollida jooksvat lõime.

Nii et loodan, et olete sellega selgelt aru saanud, mis on niit. Edasi liikudes vaatame, mis on Pythonis Multithreading.

Millal kasutada Pythonis mitmikeermelist lugemist?

Mitme keermestamine on aja kokkuhoiuks ja jõudluse parandamiseks väga kasulik, kuid seda ei saa kõikjal rakendada.
Eelmises FIFA näites on muusikalõng sõltumatu lõimest, mis võtab teie sisendi, ja lõim, mis võtab teie sisendi, on sõltumatu niidist, mis oponeerib teie vastast. Need lõimed töötavad iseseisvalt, kuna need ei sõltu üksteisest.

Seetõttu saab mitmikeermelist kasutamist kasutada ainult siis, kui sõltuvus üksikute lõimede vahel puudub.

See artikkel näitab veelgi, kuidas saate Pythonis mitmikeermelist lugemist saavutada.

Kuidas saavutada Pythonis mitmikeermelist lugemist?

Mitme keermestamise Pythonis saab saavutada keermestamine moodul.

Enne selle mooduli importimist peate selle installima. Selle installimiseks oma anaconda keskkonda käivitage oma anaconda viipal järgmine käsk:

conda install -c conda-forge tbb

eeldused masinõppe õppimiseks

Pärast selle edukat installimist saate lõimemooduli importimiseks kasutada mõnda järgmistest käskudest:

impordi keermestamine keermestamise impordist *

Nüüd, kui teil on keermestusmoodul installitud, laseme meil edasi liikuda ja teeme Pythonis Multithreading.

Kuidas luua Pythonis lõime?


Pythoni lõime saab luua kolmel viisil:

  1. Klassi loomata
  2. Laiendades Thread-klassi
  3. Thread-klassi laiendamata

Klassi loomata

Mitme lõime Pythonis saab teostada ka klassi loomata. Siin on näide sama näitamiseks:

Näide:

keermestamisest import * print (current_thread (). getName ()) def mt (): print ('Child Thread') laps = Thread (target = mt) child.start () print ('Teema nimi:', current_thread ( ) .getName ())

Väljund:

MainThreadi alamlõng Teema nimi: MainThread

Ülaltoodud väljund näitab, et esimene olemasolev lõime on peamine lõime. Seejärel loob see põhilõng alamniidi, mis täidab funktsiooni, ja seejärel täidab peamine lõime uuesti lõpliku väljatrükilause.

Nüüd liigume edasi ja vaatame, kuidas teha mitmekeelelist Pythonis klassi Thread laiendades.

Klass Thread laiendades:

Kui lõimeklassi laiendamise abil luuakse lapseklass, tähistab lapseklass, et uus lõim täidab mõnda ülesannet. Klass Threadi laiendamisel saab alamklass alistada ainult kaks meetodit, see tähendab meetodit __init __ () ja run (). Ühtegi muud meetodit ei saa tühistada kui need kaks meetodit.

Siin on näide lõime laiendamiseks lõime loomiseks:

Näide:

impordi lõimimine impordi ajaklassi müüdilugu (threading.Thread): def run (self): vahemiku x jaoks vahemikus (7): print ('Hi from child') a = mythread () a.start () a.join () print ('Hüvasti', current_thread (). GetName ())

Väljund:
Tere lapselt
Tere lapselt
Tere lapselt
Tere lapselt
Tere lapselt
Tere lapselt
Tere lapselt
Nägemiseni MainThreadist

Ülaltoodud näide näitab, et klassi myclass pärib klassi Thread ja lapseklass, st myclass alistab käitamismeetodi. Vaikimisi peab mis tahes klassifunktsiooni esimene parameeter olema ise, mis on praeguse objekti osuti. Väljund näitab, et alamlõng käivitab run () meetodi ja põhilõik ootab lapse täitmise lõpuleviimist. Selle põhjuseks on liitumisfunktsioon (), mis paneb peaniidi lapse lõpetamist ootama.

See lõimede loomise meetod on kõige eelistatum meetod, kuna see on standardmeetod. Kuid kui soovite lõime luua ilma lõime klassi pärimata või laiendamata, saate seda teha järgmisel viisil.

Keerme klassi pikendamata

Teema loomiseks ilma lõime klassi laiendamata saate teha järgmist.
Näide:

from threading import * klass ex: def myfunc (self): #self vajalik esimese parameetrina klassi func jaoks x vahemikus (7): print ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('valmis')

Väljund:

Laps
Laps
Laps
Laps
Laps
Laps
Laps
tehtud

Alamlõng käivitab myfunc, mille järel peamine lõim täidab viimase väljatrüki.

Keermestamise eelised

Mitmel niidil on palju eeliseid, millest mõned on järgmised:

  • Ressursside parem kasutamine
  • Lihtsustab koodi
  • Võimaldab samaaegselt ja paralleelselt esineda mitmesuguseid ülesandeid
  • Vähendab ajakulu või reageerimisaega, suurendades seeläbi jõudlust.

Siin on näide selle kohta, kui kaua kulub koodi käivitamiseks koos Pythoni mitmikeermelisena ja ilma:

c ++ stl sort
 Näide: 
impordiaeg def sqr (n): x jaoks n: aeg.sleep (1) x% 2 def kuup (n): x jaoks n: aeg.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = aeg.aeg () sqr (n) kuup (n) e = aeg.aeg () print (id)

Väljund:

16.042309284210205

Ülaltoodu on väljundiaeg, mis kulub programmi käivitamiseks ilma lõime kasutamata. Kasutagem nüüd lõime ja vaadake, mis juhtub sama programmiga:

Näide:

impordi keermestamine keermestamisest importimine * impordiaeg def sqr (n): x-i jaoks n-s: time.sleep (1) print ('Ülejäänud pärast jagamist 2-ga', x% 2) def kuup (n): x jaoks n time.sleep (1) print ('Ülejäänud pärast jagamist 3-ga', x% 3) n = [1,2,3,4,5,6,7,8] algus = aeg.aeg () t1 = lõim ( target = sqr, args = (n,)) t2 = lõime (target = kuup, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.joine () lõpp = aeg.aeg () print (lõpp-algus)
Väljund: 9.040220737457275

Ülaltoodud väljund näitab selgelt, et lõimede kasutamisel kuluv aeg on palju väiksem kui sama programmi täitmiseks kuluv aeg, kasutades niite.

Loodan, et teil on selles artiklis käsitletud mõisted, mis on seotud Pythoni multithreadinguga. Harjutage kindlasti nii palju kui võimalik, kuna see on üks olulisemaid programmeerimisel kasutatavaid mõisteid.

Kas teil on meile küsimus? Palun mainige seda selle ajaveebi “Multithreading in Python” kommentaaride jaotises ja meie tahe pöörduge teie poole niipea kui võimalik.

Põhjalike teadmiste saamiseks Pythoni ja selle erinevate rakenduste kohta saate registreeruda otseülekandeks 24/7 toe ja ligipääsuga kogu eluks.