Шта је међусобно читање у Питхону и како то постићи?



Сазнајте шта је мултитаскинг у питхону. Такође објашњава мултитхреадинг како да креира нити без стварања класе, проширујући класу Тхреад и не проширујући је.

Време је најважнији фактор у животу. Захваљујући својој важности, свет програмирања пружа разне трикове и технике који вам значајно помажу у смањењу потрошње времена, а самим тим и у повећању перформанси. Један од таквих приступа је Мултитхреадинг у Питхону, што је један од најважнијих концепата обухваћених .

Ево кратког сажетка свих главних предмета обрађених у овом чланку:





Шта је мултитаскинг у Питхон-у?
Шта је нит?
Шта је мултитхреадинг у питхону?
Када користити мултитхреадинг у Питхону?
Како постићи Мултитхреадинг у Питхону?
Како креирати нити у Питхону?

Предности употребе мултитхреадинга у Питхону



За почетак, прво покушајмо да разумемо мултитаскинг пре него што почнемо да учимо о Мултитхреадинг-у у Питхону.

Шта је мултитаскинг у Питхону?

Мултитаскинг је генерално способност истовременог извођења више задатака. У техничком смислу, мултитаскинг се односи на способност оперативног система да истовремено извршава различите задатке. На пример , преузимате нешто са рачунара, слушате песме и истовремено играте игру итд. Све ове задатке синхронизовано обавља исти ОС. Ово није ништа друго до мултитаскинг који вам не само што помаже да уштедите време већ и повећава продуктивност.

Постоје две врсте мултитаскинга у ОС-у:



  • На основу процеса
  • Заснован на нити

У овом чланку ћете научити о Заснован на нити мултитаскинг или Мултитхреадинг .

Шта је нит?

тхреад-мултитхреадинг у питхон-едурекаНит је у основи ан независна ток извршења. Појединачни процес може се састојати од више нити. Свака нит у програму извршава одређени задатак. На пример, када играте игру реците ФИФА на рачунару, игра у целини је један процес , али састоји се од неколико нити одговорних за пуштање музике, узимање података од корисника, синхроно покретање противника итд. Све су то засебне нити одговорне за извршавање ових различитих задатака у истом програму.

Сваки процес има једну нит која је увек покренута. Ово је главна нит. Ова главна нит уствари ствара подређене објекте нити. Подређену нит такође покреће главна нит. Даље ћу вам показати у овом чланку како да проверите тренутну покренуту нит.

Дакле, надам се да сте са овим јасно разумели шта је нит. Кренимо даље, да видимо шта је Мултитхреадинг у Питхону.

Када користити Мултитхреадинг у Питхону?

Мултитхреадинг је веома користан за уштеду времена и побољшање перформанси, али се не може применити свуда.
У претходном ФИФА примеру, музичка нит је независна од нити која узима ваш улаз, а нит која узима ваш улаз независна је од нити која покреће вашег противника. Те нити раде независно јер нису међусобно зависне.

Стога се вишеструко увијање може користити само када не постоји зависност између појединих нити.

Овај чланак даље показује како можете постићи Мултитхреадинг у Питхону.

Како постићи Мултитхреадинг у Питхону?

Мултитхреадинг у Питхону се може постићи увозом датотеке навојем модул.

Пре увоза овог модула, мораћете да га инсталирате. Да бисте ово инсталирали у свом окружењу анацонда, извршите следећу команду на свом одзиву анацонда:

цонда инсталл -ц цонда-форге тбб

Након што се успешно инсталира, можете користити било коју од следећих команди за увоз модула за навоја:

увоз навоја из навоја увоз *

Сад кад сте инсталирали тхреад тхреад модул, идемо даље и радимо Мултитхреадинг у Питхону.

Како креирати нити у Питхону?


Теме у Питхону могу се креирати на три начина:

  1. Без стварања класе
  2. Проширивањем класе Тхреад
  3. Без продужавања класе Тхреад

Без стварања класе

Мултитхреадинг у Питхону се може постићи и без стварања класе. Ево примера да се то покаже:

Пример:

фром тхреадинг импорт * принт (цуррент_тхреад (). гетНаме ()) деф мт (): принт ('Цхилд Тхреад') цхилд = Тхреад (таргет = мт) цхилд.старт () принт ('Извршење имена теме:', цуррент_тхреад ( ) .гетНаме ())

Излаз:

Подређена нит МаинТхреад Извршење имена теме: МаинТхреад

Горњи излаз показује да је прва нит која је присутна главна нит. Затим ова главна нит креира подређену нит која извршава функцију, а затим се главна нит поново извршава завршни испис.

Сада идемо напред и видећемо како да радимо Мултитхреадинг у питхону проширујући класу Тхреад.

Проширивањем класе Тхреад:

Када се подређена класа креира проширењем класе Тхреад, подређена класа представља да нова нит извршава неки задатак. Када проширује класу Тхреад, подређена класа може да замени само две методе, тј. Методу __инит __ () и методу рун (). Ниједна друга метода се не може надјачати осим ове две методе.

Ево примера како проширити класу Тхреад да би се створила нит:

Пример:

увоз навоја увоз временске класе митрет (навоја.Нит): деф рун (селф): за к у опсегу (7): принт ('Хи фром цхилд') а = митхреад () а.старт () а.јоин () принт ('Довиђења од', цуррент_тхреад (). ГетНаме ())

Излаз:
Здраво од детета
Здраво од детета
Здраво од детета
Здраво од детета
Здраво од детета
Здраво од детета
Здраво од детета
Ћао од МаинТхреада

Горњи пример показује да класа мицласс насљеђује класу Тхреад, а подређена класа, тј. Мицласс надјачава методу извођења. По дефаулту, први параметар било које функције класе мора бити селф који је показивач на тренутни објекат. Излаз показује да подређена нит извршава методу рун (), а главна нит чека извршење подређене јединице. То је због функције јоин () која чини да главна нит чека дете да заврши.

Овај метод стварања нити је најпожељнији метод јер је стандардни метод. Али у случају да желите да креирате нити без наслеђивања или проширивања класе Тхреад, то можете учинити на следећи начин.

Без класе Ектендинг Тхреад

Да бисте креирали нит без проширивања класе Тхреад, можете да урадите следеће:
Пример:

из навоја увоза * класа ек: деф мифунц (селф): # потребан сам као први параметар у функцији класе за к у опсегу (7): принт ('Цхилд') миобј = ек () тхреад1 = Тхреад (таргет = миобј. мифунц) тхреад1.старт () тхреад1.јоин () принт ('готово')

Излаз:

Дете
Дете
Дете
Дете
Дете
Дете
Дете
Готово

интерфејс маркера у примеру Јава
Подређена нит извршава мифунц након чега главна нит извршава последњу наредбу исписа.

Предности употребе навоја

Мултитхреадинг има бројне предности, од којих су неке следеће:

  • Боље коришћење ресурса
  • Поједностављује код
  • Омогућава истовремено и паралелно појављивање различитих задатака
  • Смањује потрошњу времена или време одзива, чиме се повећавају перформансе.

Ево примера за проверу колико времена је потребно да се код изврши са и без мултитхреадинга у питхону:

 Пример: 
време увоза деф скр (н): за к у н: тиме.слееп (1) к% 2 деф цубе (н): за к у н: тиме.слееп (1) к% 3 н = [1,2,3 , 4,5,6,7,8] с = време.време () скр (н) коцка (н) е = време.време () испис (и)

Излаз:

16.042309284210205

Горе је наведено излазно време потребно за извршавање програма без употребе нити. Сада ћемо користити нити и видети шта ће се догодити са истим програмом:

Пример:

увоз навоја из навоја увоз * време увоза деф скр (н): за к у н: тиме.слееп (1) принт ('Остатак после дељења са 2', к% 2) деф цубе (н): за к у н: тиме.слееп (1) принт ('Остатак након дељења са 3', к% 3) н = [1,2,3,4,5,6,7,8] старт = тиме.тиме () т1 = Тема ( таргет = скр, аргс = (н,)) т2 = Тхреад (таргет = цубе, аргс = (н,)) т1.старт () тиме.слееп (1) т2.старт () т1.јоин () т2.јоин () енд = тиме.тиме () принт (енд-старт)
Излаз: 9.040220737457275

Горе наведени излаз јасно показује да је време потребно када користимо нити много мање у односу на време потребно за извршавање истог програма без употребе нити.

Надам се да су вам јасни појмови обухваћени овим чланком који се односе на Мултитхреадинг у Питхону. Обавезно вежбајте што је више могуће јер је ово један од најважнијих концепата који се користи у програмирању.

Имате питање за нас? Молимо вас да то споменете у одељку за коментаре овог блога „Мултитхреадинг ин Питхон“ и ми ће јави се што пре.

Да бисте стекли детаљно знање о Питхону, заједно са разним апликацијама, можете се пријавити за уживо са 24/7 подршком и доживотним приступом.