Hvad er mutithreading i Python, og hvordan opnås det?



Lær, hvad der er multitasking i python. Det forklarer også multithreading, hvordan man opretter tråde uden at oprette en klasse, ved at udvide trådklassen og uden at udvide den.

Tid er den mest kritiske faktor i livet. På grund af dets betydning giver programmeringsverdenen forskellige tricks og teknikker, der i væsentlig grad hjælper dig med at reducere tidsforbruget og derved øge ydeevnen. En sådan tilgang er Multithreading i Python, som er et af de vigtigste begreber, der er omfattet af .

Her er et hurtigt resumé af alle de store, der er omfattet af denne artikel:





Hvad er multitasking i Python?
Hvad er en tråd?
Hvad er multithreading i python?
Hvornår skal man bruge multithreading i Python?
Hvordan opnås multithreading i Python?
Hvordan oprettes tråde i Python?

Fordele ved at bruge multithreading i Python



Til at begynde med skal vi først prøve at forstå multitasking, før vi begynder at lære om Multithreading i Python.

c ++ rekursivt retracement

Hvad er multitasking i Python?

Multitasking er generelt muligheden for at udføre flere opgaver samtidigt. I tekniske termer refererer multitasking til et operativsystems evne til at udføre forskellige opgaver på samme tid. For eksempel , du downloader noget på din pc samt lytter til sange og spiller samtidigt et spil osv. Alle disse opgaver udføres af det samme OS og synkroniseret. Dette er intet andet end multitasking, som ikke kun hjælper dig med at spare tid, men også øger produktiviteten.

Der er to typer multitasking i et operativsystem:



  • Procesbaseret
  • Trådbaseret

I denne artikel vil du lære om Trådbaseret multitasking eller Multithreading .

Hvad er en tråd?

tråde-multithreading i python-edurekaEn tråd er grundlæggende en uafhængig strøm af udførelse. En enkelt proces kan bestå af flere tråde. Hver tråd i et program udfører en bestemt opgave. For eksempel, når du spiller et spil, siger FIFA på din pc, er spillet som helhed en enkelt proces , men det består af flere tråde, der er ansvarlige for at afspille musikken, modtage input fra brugeren, køre modstanderen synkront osv. Alle disse er separate tråde, der er ansvarlige for at udføre disse forskellige opgaver i det samme program.

Hver proces har en tråd, der altid kører. Dette er hovedtråden. Denne hovedtråd opretter faktisk barnets trådobjekter. Undertråden initieres også af hovedtråden. Jeg vil vise jer alle yderligere i denne artikel, hvordan man kontrollerer den aktuelle kørende tråd.

Så med dette håber jeg, at du klart har forstået, hvad der er en tråd. Lad os se, hvad der er Multithreading i Python.

Hvornår skal man bruge Multithreading i Python?

Multithreading er meget nyttigt til at spare tid og forbedre ydeevnen, men det kan ikke anvendes overalt.
I det forrige FIFA-eksempel er musiktråden uafhængig af tråden, der tager dit input, og tråden, der tager dit input, er uafhængig af tråden, der kører din modstander. Disse tråde kører uafhængigt, fordi de ikke er indbyrdes afhængige.

Derfor kan multithreading kun bruges, når afhængigheden mellem individuelle tråde ikke eksisterer.

Denne artikel viser yderligere, hvordan du kan opnå multithreading i Python.

hvad er forskellen mellem java og c ++

Hvordan opnås multithreading i Python?

Multithreading i Python kan opnås ved at importere trådning modul.

Før du importerer dette modul, skal du installere det. For at installere dette på dit anaconda-miljø skal du udføre følgende kommando på din anaconda-prompt:

conda installere -c conda-smede tbb

Når det er installeret, kan du bruge en af ​​følgende kommandoer til at importere trådmodulet:

importer threading fra threading import *

Nu hvor du har installeret trådmodul, lad os gå videre og udføre Multithreading i Python.

Hvordan oprettes tråde i Python?


Tråde i Python kan oprettes på tre måder:

  1. Uden at oprette en klasse
  2. Ved at udvide trådklassen
  3. Uden at udvide trådklassen

Uden at oprette en klasse

Multithreading i Python kan også udføres uden at oprette en klasse. Her er et eksempel for at demonstrere det samme:

Eksempel:

fra threading import * print (current_thread (). getName ()) def mt (): print ('Child Thread') child = Thread (target = mt) child.start () print ('Executing thread name:', current_thread ( ) .getnavn ())

Produktion:

MainThread Undertråd Udfører trådnavn: MainThread

Ovenstående output viser, at den første tråd, der er til stede, er hovedtråden. Denne hovedtråd opretter derefter en undertråd, der udfører funktionen, og derefter udføres den endelige udskrivningserklæring igen af ​​hovedtråden.

Lad os nu gå videre og se, hvordan man laver multithreading i python ved at udvide trådklassen.

Ved at udvide trådklassen:

Når en underordnet klasse oprettes ved at udvide trådklassen, repræsenterer den underordnede klasse, at en ny tråd udfører en opgave. Når du udvider trådklassen, kan underordnet klasse kun tilsidesætte to metoder, dvs. metoden __init __ () og metoden run (). Ingen anden metode kan tilsidesættes bortset fra disse to metoder.

Her er et eksempel på, hvordan du udvider trådklassen til at oprette en tråd:

Eksempel:

import threading import time class mythread (threading.Thread): def run (self): for x in range (7): print ('Hi from child') a = mythread () a.start () a.join () print ('Bye from', current_thread (). GetName ())

Produktion:
Hej fra barnet
Hej fra barnet
Hej fra barnet
Hej fra barnet
Hej fra barnet
Hej fra barnet
Hej fra barnet
Farvel fra MainThread

Ovenstående eksempel viser, at klasse myclass arver trådklassen, og den underordnede klasse, dvs. myclass tilsidesætter køremetoden. Som standard skal den første parameter i en hvilken som helst klassefunktion være selv, som er markøren til det aktuelle objekt. Outputtet viser, at barnetråden udfører metoden run (), og hovedtråden venter på, at childs-udførelsen er færdig. Dette skyldes funktionen join (), som får hovedtråden til at vente på, at barnet er færdigt.

Denne metode til oprettelse af tråde er den mest foretrukne metode, fordi den er standardmetoden. Men hvis du vil oprette tråde uden at arve eller udvide trådklassen, kan du gøre det på følgende måde.

hvordan man bliver ai ingeniør

Uden at udvide trådklassen

For at oprette en tråd uden at udvide trådklassen kan du gøre som følger:
Eksempel:

fra threading import * klasse ex: def myfunc (selv): # selv nødvendigt som første parameter i en klassefunktion for x inden for rækkevidde (7): print ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('done')

Produktion:

Barn
Barn
Barn
Barn
Barn
Barn
Barn
Færdig

Undertråden udfører myfunc, hvorefter hovedtråden udfører den sidste udskrivningserklæring.

Fordele ved at bruge gevind

Multithreading har mange fordele, hvoraf nogle er som følger:

  • Bedre ressourceudnyttelse
  • Forenkler koden
  • Tillader samtidig og parallel forekomst af forskellige opgaver
  • Reducerer tidsforbruget eller responstiden, hvilket øger ydeevnen.

Her er et eksempel for at kontrollere, hvor lang tid det tager for en kode at udføre med og uden multithreading i python:

 Eksempel: 
importtid def sqr (n): for x i n: time.sleep (1) x% 2 def cube (n): for x in n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = time.time () sqr (n) terning (n) e = time.time () print (es)

Produktion:

16.042309284210205

Ovenstående er den tid, det tager at udføre programmet uden at bruge tråde. Lad os nu bruge tråde og se, hvad der sker med det samme program:

Eksempel:

import threading fra threading import * importtid def sqr (n): for x i n: time.sleep (1) print ('Rest efter at have divideret med 2', x% 2) def cube (n): for x i n: time.sleep (1) print ('Rest efter at have divideret med 3', x% 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Thread ( target = sqr, args = (n,)) t2 = Thread (target = cube, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () slut = time.time () print (slut-start)
Produktion: 9.040220737457275

Ovenstående output viser tydeligt, at den tid, det tager, når vi bruger tråde, er meget mindre sammenlignet med den tid, det tager for det samme program at køre uden at bruge tråde.

Jeg håber, du er klar med de begreber, der er dækket af denne artikel, relateret til Multithreading i Python. Sørg for at øve så meget som muligt, da dette er et af de vigtigste begreber, der bruges i programmering.

Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne “Multithreading in Python” -blog, og vi vilje komme tilbage til dig hurtigst muligt.

For at få dybtgående viden om Python sammen med dens forskellige applikationer kan du tilmelde dig live med 24/7 support og livstidsadgang.