Kas ir mutogrāfija Python un kā to sasniegt?



Uzziniet, kas ir daudzuzdevumu veikšana pitonā. Tas arī izskaidro vairāku pavedienu veidošanu, kā izveidot pavedienus, neveidojot klasi, paplašinot Thread klasi un nepagarinot to.

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?

threads-multithreading python-edurekaVī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:

  1. Neveidojot klasi
  2. Paplašinot Thread klasi
  3. 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

Bērna pavediens izpilda myfunc, pēc kura galvenais pavediens izpilda pēdējo drukas paziņojumu.

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ā.