Hva er mutithreading i Python og hvordan oppnå det?



Lær hva som er multitasking i python. Det forklarer også multitrading hvordan du lager tråder uten å lage en klasse, ved å utvide trådklassen og uten å utvide den.

Tid er den mest kritiske faktoren i livet. På grunn av dets betydning gir programmeringsverdenen forskjellige triks og teknikker som i betydelig grad hjelper deg med å redusere tidsforbruket, og dermed øke ytelsen. En slik tilnærming er Multithreading in Python, som er et av de viktigste konseptene som dekkes av .

Her er et raskt sammendrag av alle hovedfagene som er dekket i denne artikkelen:





Hva er multitasking i Python?
Hva er en tråd?
Hva er multitrading i python?
Når skal du bruke multitrading i Python?
Hvordan oppnå multithreading i Python?
Hvordan lage tråder i Python?

slå streng til array php

Fordeler med å bruke multitråding i Python



Til å begynne med, la oss først prøve å forstå multitasking før vi begynner å lære om Multithreading i Python.

Hva er multitasking i Python?

Multitasking er generelt muligheten til å utføre flere oppgaver samtidig. I tekniske termer refererer multitasking til et operativsystems evne til å utføre forskjellige oppgaver samtidig. For eksempel , du laster ned noe på PC-en din, i tillegg til å lytte til sanger og samtidig spille et spill, etc. Alle disse oppgavene utføres av det samme operativsystemet og synkroniseres. Dette er ikke annet enn multitasking som ikke bare hjelper deg å spare tid, men som også øker produktiviteten.

Det er to typer multitasking i et operativsystem:



  • Prosessbasert
  • Gjengebasert

I denne artikkelen vil du lære om Gjengebasert multitasking eller Multitrading .

Hva er en tråd?

tråder-multithreading i python-edurekaEn tråd er i utgangspunktet en uavhengig flyt av utførelse. En enkelt prosess kan bestå av flere tråder. Hver tråd i et program utfører en bestemt oppgave. For eksempel, når du spiller et spill, si FIFA på din PC, er spillet som helhet en enkelt prosess , men den består av flere tråder som er ansvarlige for å spille av musikken, ta input fra brukeren, kjøre motstanderen synkront osv. Alt dette er separate tråder som er ansvarlige for å utføre disse forskjellige oppgavene i det samme programmet.

Hver prosess har en tråd som alltid kjører. Dette er hovedtråden. Denne hovedtråden oppretter faktisk barnetrådobjektene. Barnetråden initieres også av hovedtråden. Jeg vil vise deg alle videre i denne artikkelen hvordan du sjekker den nåværende løpende tråden.

Så med dette håper jeg du har klart forstått hva som er en tråd. La oss se hva som er Multithreading i Python.

Når skal du bruke Multithreading i Python?

Multithreading er veldig nyttig for å spare tid og forbedre ytelsen, men den kan ikke brukes overalt.
I det forrige FIFA-eksemplet er musikktråden uavhengig av tråden som tar input og tråden som tar input er uavhengig av tråden som kjører motstanderen din. Disse trådene kjøres uavhengig fordi de ikke er avhengige av hverandre.

Derfor kan multitrading kun brukes når avhengigheten mellom individuelle tråder ikke eksisterer.

Denne artikkelen viser videre hvordan du kan oppnå Multithreading i Python.

Hvordan oppnå multithreading i Python?

Multithreading i Python kan oppnås ved å importere gjenging modul.

Før du importerer denne modulen, må du installere den. For å installere dette på anaconda-miljøet, utfør følgende kommando på anaconda-ledeteksten:

conda installere -c conda-smie tbb

Etter at den er installert, kan du bruke en av følgende kommandoer for å importere trådmodulen:

importer tråder fra tråder import *

Nå som du har installert trådmodul, la oss gå videre og gjøre Multithreading i Python.

Hvordan lage tråder i Python?


Tråder i Python kan opprettes på tre måter:

  1. Uten å lage en klasse
  2. Ved å utvide trådklassen
  3. Uten å utvide trådklassen

Uten å lage en klasse

Multithreading i Python kan oppnås uten å lage en klasse også. Her er et eksempel for å 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 ( ) .getName ())

Produksjon:

Hovedtråd Barnetråd Utfører trådnavn: Hovedtråd

Ovennevnte utgang viser at den første tråden som er til stede er hovedtråden. Denne hovedtråden oppretter deretter en underordnet tråd som utfører funksjonen, og den endelige utskriftsuttalelsen utføres igjen av hovedtråden.

La oss nå gå videre og se hvordan vi gjør multithreading i python ved å utvide trådklassen.

Ved å utvide trådklassen:

Når en barneklasse opprettes ved å utvide trådklassen, representerer underordnede klassen at en ny tråd utfører noen oppgave. Når du utvider trådklassen, kan barneklassen bare overstyre to metoder, dvs. metoden __init __ () og metoden run (). Ingen annen metode kan overstyres, bortsett fra disse to metodene.

Her er et eksempel på hvordan du utvider trådklassen til å lage 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 ())

Produksjon:
Hei fra barnet
Hei fra barnet
Hei fra barnet
Hei fra barnet
Hei fra barnet
Hei fra barnet
Hei fra barnet
Farvel fra MainThread

Ovennevnte eksempel viser at klasse myclass arver trådklassen og child class, dvs. myclass overstyrer kjøringsmetoden. Som standard må den første parameteren i en hvilken som helst klassefunksjon være selv, som er pekeren til det nåværende objektet. Utdataene viser at barnetråden kjører metoden run () og hovedtråden venter på at barnets kjøring skal fullføres. Dette er på grunn av join () -funksjonen, som får hovedtråden til å vente på at barnet skal bli ferdig.

Denne metoden for å lage tråder er den mest foretrukne metoden fordi den er standardmetoden. Men i tilfelle du vil lage tråder uten å arve eller utvide trådklassen, kan du gjøre det på følgende måte.

Uten å utvide trådklassen

For å lage en tråd uten å utvide trådklassen, kan du gjøre som følger:
Eksempel:

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

Produksjon:

Barn
Barn
Barn
Barn
Barn
Barn
Barn
ferdig

Undertråden utfører myfunc, hvoretter hovedtråden utfører den siste utskriftsuttalelsen.

Fordeler med å bruke gjenger

Multithreading har mange fordeler, hvorav noen er som følger:

  • Bedre utnyttelse av ressursene
  • Forenkler koden
  • Tillater samtidig og parallell forekomst av forskjellige oppgaver
  • Reduserer tidsforbruket eller responstiden, og øker dermed ytelsen.

Her er et eksempel for å sjekke hvor lang tid det tar for en kode å utføre med og uten multithreading i python:

 Eksempel: 
importtid def sqr (n): for x i n: time.sleep (1) x% 2 def kube (n): for x in n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = tid.tid () kvr (n) kube (n) e = tid.tid () utskrift (er)

Produksjon:

16.042309284210205

Ovennevnte er utgangstiden det tar å kjøre programmet uten å bruke tråder. La oss nå bruke tråder og se hva som skjer med det samme programmet:

Eksempel:

importere tråder fra tråder import * importtid def sqr (n): for x i n: time. sleep (1) print ('Rest etter divisjon med 2', x% 2) def kube (n): for x i n: time.sleep (1) print ('Rest etter divisjon 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 () slutt = tid.tid () utskrift (sluttstart)
Produksjon: 9.040220737457275

Ovennevnte utgang viser tydelig at tiden det tar når vi bruker tråder er mye mindre sammenlignet med tiden det tar for det samme programmet å kjøre uten å bruke tråder.

Jeg håper du er klar med konseptene som dekkes under denne artikkelen relatert til Multithreading in Python. Sørg for å øve så mye som mulig, da dette er et av de viktigste begrepene som brukes i programmering.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne “Multithreading in Python” -bloggen, og vi vil komme tilbake til deg så snart som mulig.

For å få inngående kunnskap om Python sammen med de forskjellige applikasjonene, kan du registrere deg for live med 24/7 support og levetidstilgang.