Vad är mutithreading i Python och hur man uppnår det?



Lär dig vad som är multitasking i python. Det förklarar också multithreading hur man skapar trådar utan att skapa en klass, genom att utöka trådklassen och utan att utöka den.

Tid är den mest kritiska faktorn i livet. På grund av dess betydelse tillhandahåller programmeringsvärlden olika knep och tekniker som avsevärt hjälper dig att minska tidsförbrukningen och därmed öka prestandan. En sådan metod är Multithreading in Python, som är ett av de viktigaste begreppen som omfattas av .

Här är en snabb sammanfattning av alla huvudämnen som omfattas av den här artikeln:





Vad är göra flera saker samtidigt i Python?
Vad är en tråd?
Vad är multithreading i python?
När ska man använda multithreading i Python?
Hur uppnår man multithreading i Python?
Hur skapar jag trådar i Python?

Fördelar med att använda multithreading i Python



Till att börja med, låt oss först försöka förstå multitasking innan vi börjar lära oss om Multithreading i Python.

Vad är multitasking i Python?

Multitasking är i allmänhet möjligheten att utföra flera uppgifter samtidigt. I tekniska termer avser multitasking förmågan hos ett operativsystem att utföra olika uppgifter samtidigt. Till exempel , du laddar ner något på din PC samt lyssnar på låtar och spelar samtidigt ett spel etc. Alla dessa uppgifter utförs av samma operativsystem och synkroniseras. Detta är inget annat än multitasking vilket inte bara hjälper dig att spara tid utan också ökar produktiviteten.

Det finns två typer av multitasking i ett operativsystem:



  • Processbaserad
  • Trådbaserad

I den här artikeln kommer du att lära dig mer om Trådbaserad multitasking eller Multithreading .

Vad är en tråd?

trådar-multithreading i python-edurekaEn tråd är i grunden en självständig flöde av utförande. En enda process kan bestå av flera trådar. Varje tråd i ett program utför en viss uppgift. Till exempel, när du spelar ett spel, säg FIFA på din dator, är spelet som helhet en enda process , men den består av flera trådar som är ansvariga för att spela musiken, ta in input från användaren, köra motståndaren synkront etc. Alla dessa är separata trådar som ansvarar för att utföra dessa olika uppgifter i samma program.

Varje process har en tråd som alltid körs. Detta är huvudtråden. Denna huvudtråd skapar faktiskt barntrådsobjekten. Barntråden initieras också av huvudtråden. Jag kommer att visa er alla vidare i den här artikeln hur man kontrollerar den aktuella löptråden.

förlänger och implementerar tillsammans i java

Så med det här hoppas jag att du tydligt har förstått vad som är en tråd. Låt oss se vad som är Multithreading i Python.

När ska man använda Multithreading i Python?

Multithreading är mycket användbart för att spara tid och förbättra prestanda, men det kan inte användas överallt.
I det föregående FIFA-exemplet är musiktråden oberoende av tråden som tar din input och tråden som tar din input är oberoende av tråden som kör din motståndare. Dessa trådar körs oberoende eftersom de inte är beroende av varandra.

Därför kan multitrådning endast användas när beroendet mellan enskilda trådar inte existerar.

Den här artikeln visar vidare hur du kan uppnå Multithreading i Python.

Hur uppnår man multithreading i Python?

Multithreading i Python kan uppnås genom att importera gängning modul.

Innan du importerar den här modulen måste du installera den. För att installera detta på din anaconda-miljö, kör du följande kommando på din anaconda-fråga:

conda install -c conda-forge tbb

Efter att den har installerats kan du använda något av följande kommandon för att importera trådmodulen:

importera trådar från trådar importera *

Nu när du har installerat trådmodul, låt oss gå vidare och göra Multithreading i Python.

Hur skapar jag trådar i Python?


Trådar i Python kan skapas på tre sätt:

  1. Utan att skapa en klass
  2. Genom att utöka trådklassen
  3. Utan att utvidga trådklassen

Utan att skapa en klass

Multithreading i Python kan åstadkommas utan att skapa en klass också. Här är ett exempel för att demonstrera detsamma:

Exempel:

från threading import * print (current_thread (). getName ()) def mt (): print ('Child Thread') child = Thread (target = mt) child.start () print ('Executing thread name:', current_thread ( ).hämta namn())

Produktion:

MainThread Child Thread Executing thread name: MainThread

Ovanstående utdata visar att den första tråden som är närvarande är huvudtråden. Denna huvudtråd skapar sedan en undertråd som kör funktionen och det slutliga utskriftsuttalandet körs igen av huvudtråden.

Låt oss nu gå vidare och se hur man gör Multithreading i python genom att utvidga Thread-klassen.

hur man varnar i javascript

Genom att utöka trådklassen:

När en barnklass skapas genom att utvidga trådklassen representerar underklassen att en ny tråd kör någon uppgift. Vid utvidgning av trådklassen kan barnklassen endast åsidosätta två metoder, dvs. metoden __init __ () och metoden run (). Ingen annan metod kan åsidosättas än dessa två metoder.

Här är ett exempel på hur du utvidgar tråden till att skapa en tråd:

Exempel:

importera trådning importtidsklass mythread (threading.Thread): def run (self): för x i intervall (7): print ('Hej från barn') a = mythread () a.start () a.join () print ('Bye from', current_thread (). GetName ())

Produktion:
Hej från barnet
Hej från barnet
Hej från barnet
Hej från barnet
Hej från barnet
Hej från barnet
Hej från barnet
Hejdå från MainThread

Ovanstående exempel visar att klass myclass ärver trådklassen och underklassen dvs myclass åsidosätter körmetoden. Som standard måste den första parametern i en klassfunktion vara själv som är pekaren till det aktuella objektet. Utgången visar att den underordnade tråden kör körningsmetoden () och huvudtråden väntar på att barnets körning ska slutföras. Detta beror på funktionen join (), som gör att huvudtråden väntar på att barnet ska slutföra.

Denna metod för att skapa trådar är den mest föredragna metoden eftersom den är standardmetoden. Men om du vill skapa trådar utan att ärva eller utvidga trådklassen kan du göra det på följande sätt.

Utan att förlänga trådklassen

För att skapa en tråd utan att utvidga trådklassen kan du göra på följande sätt:
Exempel:

från threading import * klass ex: def myfunc (själv): # själv nödvändig som första parameter i en klassfunktion för x i intervall (7): skriv ut ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('done')

Produktion:

Barn
Barn
Barn
Barn
Barn
Barn
Barn
Gjort

Barntråden kör myfunc varefter huvudtråden kör det sista utskriftsuttalandet.

Fördelar med att använda gängning

Multithreading har många fördelar varav några är följande:

  • Bättre resursutnyttjande
  • Förenklar koden
  • Tillåter samtidig och parallell förekomst av olika uppgifter
  • Minskar tidsförbrukningen eller svarstiden, vilket ökar prestandan.

Här är ett exempel för att kontrollera hur lång tid det tar för en kod att köra med och utan multithreading i python:

 Exempel: 
importtid def sqr (n): för x i n: time.sleep (1) x% 2 def kub (n): för x in n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = time.time () sqr (n) kub (n) e = time.time () print (s)

Produktion:

16.042309284210205

Ovanstående är den tid det tar att köra programmet utan att använda trådar. Låt oss nu använda trådar och se vad som händer med samma program:

Exempel:

importera trådar från trådar import * importtid def sqr (n): för x i n: time.sleep (1) skriv ut ('Resten efter delning med 2', x% 2) def kub (n): för x i n: time.sleep (1) print ('Rest efter delning med 3', x% 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Thread ( mål = sqr, args = (n,)) t2 = Tråd (target = kub, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () slut = tid.tid () utskrift (slutstart)
Produktion: 9.040220737457275

Ovanstående utdata visar tydligt att den tid det tar när vi använder trådar är mycket mindre jämfört med den tid det tar för samma program att köra utan att använda trådar.

Jag hoppas att du är tydlig med de begrepp som omfattas av den här artikeln relaterade till Multithreading i Python. Se till att öva så mycket som möjligt eftersom det här är ett av de viktigaste begreppen som används i programmering.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i den här 'Multithreading in Python' -bloggen och vi kommer komma tillbaka till dig så snart som möjligt.

För att få fördjupad kunskap om Python tillsammans med dess olika applikationer kan du registrera dig för live med 24/7 support och livstidsåtkomst.