Laiks ir viskritiskākais faktors dzīvē. Pateicoties tās nozīmībai, programmēšanas pasaule piedāvā dažādus trikus un paņēmienus, kas ievērojami palīdz samazināt laika patēriņu, tādējādi palielinot veiktspēju. Viena no šādām pieejām ir Multithreading Python, kas ir viens no vissvarīgākajiem jēdzieniem, uz kuriem tas attiecas .
Šeit ir īss kopsavilkums par visiem galvenajiem uzņēmumiem, uz kuriem attiecas šis raksts:
Kas ir daudzuzdevumu veikšana Pitonā?
Kas ir pavediens?
Kas ir daudzsavienojums pitonā?
Kad Python izmantot daudzsavienojumu?
Kā panākt daudzsavienojumu Python?
Kā izveidot pavedienus Python?
Multithreading izmantošanas priekšrocības Python
Vispirms mēģināsim izprast daudzuzdevumu veikšanu, pirms sākam mācīties par daudzsavienojumu Python.
Kas ir daudzuzdevumu veikšana Python?
Daudzuzdevumu veikšana kopumā ir spēja vienlaikus veikt vairākus uzdevumus. Tehniskā ziņā daudzuzdevumu veikšana attiecas uz operētājsistēmas spēju vienlaikus veikt dažādus uzdevumus. Piemēram , jūs kaut ko lejupielādējat datorā, kā arī klausāties dziesmas un vienlaicīgi spēlējat spēli utt. Visus šos uzdevumus sinhronizēti veic viena un tā pati OS. Tas nav nekas cits kā daudzuzdevumu veikšana, kas ne tikai palīdz ietaupīt laiku, bet arī palielina produktivitāti.
OS ir divu veidu daudzuzdevumu veikšana:
- Uz procesu balstīts
- Vītņu bāzes
Šajā rakstā jūs uzzināsiet par Vītņu bāzes daudzuzdevumu vai Daudzsavienojums .
Kas ir pavediens?
Vītne būtībā ir neatkarīgs izpildes plūsma. Viens process var sastāvēt no vairākiem pavedieniem. Katrs programmas pavediens veic noteiktu uzdevumu. Piemēram, kad jūs spēlējat spēli, sakiet FIFA datorā, spēle kopumā ir viens process , bet tas sastāv no vairākiem pavedieniem, kas atbild par mūzikas atskaņošanu, lietotāja ieejas iegūšanu, pretinieka sinhronu vadīšanu utt. Visi šie ir atsevišķi pavedieni, kas atbildīgi par šo dažādo uzdevumu veikšanu vienā un tajā pašā programmā.
Katram procesam ir viens pavediens, kas vienmēr darbojas. Tas ir galvenais pavediens. Šis galvenais pavediens faktiski izveido bērnu pavedienu objektus. Bērna pavedienu aizsāk arī galvenais pavediens. Es jums visiem šajā rakstā parādīšu tālāk, kā pārbaudīt pašreizējo darbojošos pavedienu.
darba sākšana ar mysql darbagaldu
Tāpēc ar šo es ceru, ka jūs esat skaidri sapratis, kas ir pavediens. Turpinot, redzēsim, kas ir Pythonā daudzsavienojums.
Kad Python izmantot multithreading?
Daudzsavienojums ir ļoti noderīgs laika ietaupīšanai un veiktspējas uzlabošanai, taču to nevar pielietot visur.
Iepriekšējā FIFA piemērā mūzikas pavediens ir neatkarīgs no pavediena, kas ņem jūsu ievadi, un pavediens, kas uzņem jūsu ievadi, nav atkarīgs no pavediena, kas vada jūsu pretinieku. Šie pavedieni darbojas neatkarīgi, jo tie nav savstarpēji atkarīgi.
Tāpēc daudzsavienojumu var izmantot tikai tad, ja atkarība starp atsevišķiem pavedieniem nepastāv.
Šis raksts tālāk parāda, kā jūs varat sasniegt daudzsavienojumu Python.
Kā panākt daudzsavienojumu Python?
Daudzlīniju vītni Python var panākt, importējot vītņošana modulis.
Pirms šī moduļa importēšanas jums tas būs jāinstalē. Lai to instalētu savā anaconda vidē, izpildiet šādu komandu savā anaconda uzvednē:
conda install -c conda-forge tbb
beidzot un pabeigt java
Pēc veiksmīgas instalēšanas vītņu moduļa importēšanai varat izmantot jebkuru no šīm komandām:
importēt vītni no vītņu importa *
Tagad, kad jums ir instalēts vītņu modulis, ļaujiet mums virzīties uz priekšu un veikt Pythonā daudzsavienojumu.
Kā izveidot pavedienus Python?
Vītnes Python var izveidot trīs veidos:
- Neveidojot klasi
- Paplašinot Thread klasi
- Nepagarinot Thread klasi
Neveidojot klasi
Daudzlīniju vītni Python var veikt, neizveidojot arī klasi. Šeit ir piemērs, lai parādītu to pašu:
Piemērs:
no pavedienu importēšanas * print (current_thread (). getName ()) def mt (): print ('Child Thread') bērns = Thread (target = mt) child.start () print ('Izpilda pavediena nosaukumu:', current_thread ( ) .getName ())
Izeja:
MainThread Child Thread Izpilda pavediena nosaukumu: MainThread
Iepriekš minētā izeja parāda, ka pirmais esošais pavediens ir galvenais pavediens. Pēc tam šis galvenais pavediens izveido pakārtoto pavedienu, kas izpilda funkciju, un pēc tam galveno pavedienu atkal izpilda galīgo izdrukas paziņojumu.
Tagad ļaujiet mums virzīties uz priekšu un redzēt, kā veikt daudzsavienojumu pitonā, paplašinot Thread klasi.
Paplašinot pavedienu klasi:
Kad bērnu klase tiek izveidota, paplašinot pavedienu klasi, bērnu klase norāda, ka jauns pavediens izpilda kādu uzdevumu. Paplašinot pavedienu klasi, bērnu klase var ignorēt tikai divas metodes, ti, metodi __init __ () un run (). Nevar ignorēt nevienu citu metodi, izņemot šīs divas metodes.
Šeit ir piemērs, kā paplašināt Thread klasi, lai izveidotu pavedienu:
Piemērs:
importēt vītnes importēšanas laika klases mītiņu lasīšana (threading.Thread): def run (self): x diapazonā (7): print ('Hi from child') a = mythread () a.start () a.join () print ('Atvadīšanās no', current_thread (). GetName ())
Izeja:
Sveiki no bērna
Sveiki no bērna
Sveiki no bērna
Sveiki no bērna
Sveiki no bērna
Sveiki no bērna
Sveiki no bērna
Uz redzēšanos no MainThread
kas ir dati, kas sajaucas tabulā
Iepriekš minētais piemērs parāda, ka klases myclass mantojumā ir Thread klase un bērnu klase, t.i. myclass ir svarīgāka par palaišanas metodi. Pēc noklusējuma jebkuras klases funkcijas pirmajam parametram jābūt pašam, kas ir rādītājs pašreizējam objektam. Rezultāts parāda, ka pakārtotais pavediens izpilda run () metodi un galvenais pavediens gaida, kamēr bērns izpildīs. Tas notiek savienojuma () funkcijas dēļ, kas liek galvenajam pavedienam gaidīt, kamēr bērns beigs.
Šī pavedienu izveides metode ir visvairāk vēlamā metode, jo tā ir standarta metode. Bet, ja vēlaties izveidot pavedienus, nemantojot vai nepagarinot pavedienu klasi, varat to izdarīt šādā veidā.
Nepagarinot pavedienu klasi
Lai izveidotu pavedienu, nepaplašinot Vītnes klasi, varat rīkoties šādi:
Piemērs:
from threading import * class ex: def myfunc (self): #self required kā pirmais parametrs klases func x diapazonā (7): print ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('darīts')
Izeja:
Bērns
Bērns
Bērns
Bērns
Bērns
Bērns
Bērns
izdarīts
Vītņu izmantošanas priekšrocības
Daudzsavienojumam ir daudz priekšrocību, no kurām dažas ir šādas:
- Labāka resursu izmantošana
- Vienkāršo kodu
- Ļauj vienlaikus un paralēli veikt dažādus uzdevumus
- Samazina laika patēriņu vai reakcijas laiku, tādējādi palielinot veiktspēju.
Šis ir piemērs, lai pārbaudītu, cik ilgs laiks paiet, kamēr kods tiek izpildīts ar daudzlīniju un bez tās Python:
Piemērs:
importēšanas laiks def sqr (n): x x n: laiks.sleep (1) x% 2 def kubs (n): x in n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = laiks. Laiks () kvr (n) kubs (n) e = laiks. Laiks () izdruka (-s)
Izeja:
16.042309284210205
Iepriekš ir izejas laiks, kas nepieciešams programmas izpildei, neizmantojot pavedienus. Tagad izmantosim pavedienus un redzēsim, kas notiek ar to pašu programmu:
Piemērs:
importēt pavedienus no vītnēm importēt * importēšanas laiks def sqr (n): x x n: time.sleep (1) print ('Atlikums pēc dalīšanas ar 2', x% 2) def kubs (n): x x n: time.sleep (1) print ('Atlikums pēc dalīšanas ar 3', x% 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Thread ( target = sqr, args = (n,)) t2 = pavediens (target = kubs, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () beigas = laiks. laiks () druka (sākuma sākums)Izeja: 9.040220737457275
Iepriekš minētā izeja skaidri parāda, ka laiks, kas vajadzīgs, kad mēs izmantojam pavedienus, ir daudz mazāks nekā laiks, kas vajadzīgs tās pašas programmas izpildei, neizmantojot pavedienus.
Es ceru, ka jums ir skaidri saprotami šajā rakstā aplūkotie jēdzieni, kas saistīti ar Multithreading Python. Pārliecinieties, ka praktizējat pēc iespējas vairāk, jo tas ir viens no vissvarīgākajiem jēdzieniem, kas tiek izmantots programmēšanā.
Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra “Multithreading in Python” komentāru sadaļā un mēs būs sazinieties ar jums pēc iespējas ātrāk.
Lai iegūtu padziļinātas zināšanas par Python kopā ar dažādām lietojumprogrammām, varat reģistrēties tiešraidē ar diennakts atbalstu un piekļuvi mūža garumā.