Питхон вишепроцесни ред

Pithon Viseprocesni Red



Најважнији елемент структуре података је ред. Ред структуре података „први ушао, први изашао” који је основа за вишепроцесну обраду Питхон-а је упоредив. Редови су обезбеђени функцији процеса како би се омогућило процесу да прикупи податке. Прва ставка података која се елиминише из реда је прва ставка која се уноси. Користимо метод „пут()“ реда да бисмо додали податке у ред и његов метод „гет()“ да бисмо преузели податке из реда.

Пример 1: Коришћење методе Куеуе() за креирање реда за више процеса у Питхон-у

У овом примеру креирамо вишепроцесни ред у Питхон-у користећи метод „куеуе()“. Вишепроцесирање се односи на употребу једног или више ЦПУ-а у систему за обављање два или више процеса истовремено. Мултипроцесинг, конструисани модул у Питхон-у, олакшава пребацивање између процеса. Морамо бити упознати са својством процеса пре него што радимо са вишепроцесирањем. Свесни смо да је ред кључна компонента модела података. Стандардни ред за податке, који је изграђен на идеји „Први-први-први-оут“, и Питхон вишепроцесна обрада су потпуне парњаке. Уопштено говорећи, ред чува Питхон објекат и кључан је за пренос података између задатака.







Алат „спидер“ се користи за имплементацију Питхон скрипте присутно, па хајде да једноставно почнемо. Прво морамо да увеземо вишепроцесни модул јер покрећемо Питхон скрипту за више процеса. Ово смо урадили тако што смо увезли модул за више процеса као „м“. Користећи технику „м.куеуе()“, ми позивамо метод „куеуе()“ за више процеса. Овде креирамо променљиву под називом „куеуе“ и постављамо методу „куеуе()“ за више процеса у њу. Пошто знамо да ред складишти ставке по редоследу „први ушао, први изашао“, прва се уклања ставка коју прво додамо. Након покретања вишепроцесног реда, позивамо методу „принт()“, прослеђујући наредбу „Постоји вишепроцесни ред“ као аргумент за његово приказивање на екрану. Затим, пошто конструисани ред чувамо у овој променљивој, штампамо ред тако што ћемо проследити променљиву „куеуе“ у загради методе „принт()“.




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







Пример 2: Коришћење методе „Ксизе()“ за одређивање величине реда за више процеса у Питхон-у

У овом случају одређујемо величину реда за више процеса. Да бисмо израчунали величину вишепроцесног реда, користимо метод „ксизе()“. Функција „ксизе()“ враћа стварну величину вишепроцесног реда за Питхон. Другим речима, овај метод обезбеђује укупан број ставки у реду.

Почнимо са увозом Питхон вишепроцесног модула као „м“ пре покретања кода. Затим, користећи команду „м.куеуе()“, позивамо функцију „куеуе()“ за више процеса и стављамо резултат у променљиву „Куеуе“. Затим, користећи методу „пут()“, додамо ставке у ред у следећем реду. Овај метод се користи за додавање података у ред. Због тога зовемо „Куеуе“ методом „пут()“ и наводимо целобројне бројеве као његов елемент у загради. Бројеви које додајемо су „1”, „2”, „3”, „4”, „5”, „6” и „7” користећи функције „пут()”.



Штавише, користећи „Куеуе“ за добијање величине вишепроцесног реда, позивамо „ксизе()“ са редом за вишепроцесирање. Затим, у новоформираној променљивој „резултат“ чувамо резултат методе „ксизе()“. Након тога, позивамо метод „принт()“ и као његов параметар прослеђујемо изјаву „Величина реда за више обраде је“. Затим позивамо променљиву „резултат“ у функцији „принт()“ пошто је величина сачувана у овој променљивој.


Излазна слика има приказану величину. Док користимо функцију „пут()“ да бисмо додали седам елемената у ред за вишеструку обраду и функцију „ксизе()“ да бисмо одредили величину, приказује се величина реда за више процеса „7“. Улазни исказ „величина реда за више процеса“ је приказан пре величине.

Пример 3: Коришћење метода „Пут()“ и „Гет()“ у Питхон вишепроцесном реду

У овом примеру се користе методе реда „пут()“ и „гет()“ из Питхон вишепроцесног реда. У овом примеру развијамо две кориснички дефинисане функције. У овом примеру дефинишемо функцију за креирање процеса који производи „5“ насумичних целих бројева. Такође користимо метод „пут()“ да бисмо их додали у ред. Метода „пут()“ се користи за постављање ставки у ред. Затим, да бисмо преузели бројеве из реда и вратили њихове вредности, пишемо другу функцију и позивамо је током процедуре. Користимо функцију „гет()“ за преузимање бројева из реда пошто се овај метод користи за преузимање података из реда које убацујемо помоћу методе „пут()“.

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


Дефинишемо функцију. Затим, пошто је ова функција кориснички дефинисана, дајемо јој име „функција1“ и проследимо термин „ред“ као њен аргумент. Након тога, позивамо функцију „принт()“, прослеђујући јој изјаве „буилдер: Руннинг“, „флусх“ и објекат „Труе“. Питхон-ова функција штампања има јединствену опцију која се зове флусх која омогућава кориснику да изабере да ли да баферује овај излаз или не. Следећи корак је генерисање задатка. Да бисмо то урадили, користимо „фор“ и креирамо променљиву „м“ и подешавамо опсег на „5“. Затим у следећем реду користите „рандом()“ и сачувајте резултат у променљивој коју смо направили, а то је „вредност“. Ово указује да функција сада завршава својих пет итерација, при чему свака итерација ствара насумични цео број од 0 до 5.

Затим, у следећем кораку, позивамо функцију „слееп()“ и прослеђујемо аргумент „вредност“ да одложимо део на одређени број секунди. Затим позивамо „ред“ са методом „пут()“ да бисмо у суштини додали вредност у ред. Корисник се тада обавештава да више нема посла који треба да се обави поновним позивањем методе „куеуе.пут()“ и прослеђивањем вредности „Ноне“. Затим покрећемо методу „принт()“, проследимо наредбу „буилдер: реади“ заједно са „флусх“ и постављамо је на „Труе“.


Сада дефинишемо другу функцију, “фунцтион2”, и додељујемо кључну реч “куеуе” као њен аргумент. Затим позивамо функцију „принт()“ док проследимо стање извештаја „Корисник: ради“ и „флусх“  који је постављен на „Тачно“. Започињемо операцију „фунцтион2“ користећи вхиле труе услов да извадимо податке из реда и ставимо их у новокреирану променљиву „итем“. Затим користимо услов „ако“, „ставка није ништа“, да прекинемо петљу ако је услов тачан. Ако ниједна ставка није доступна, зауставља се и тражи од корисника. Задатак зауставља петљу и завршава се у овом случају ако је ставка која се добија из вредности нула. Затим, у следећем кораку, позивамо функцију „принт()“ и пружамо јој извештај „Корисник: спреман“ и параметре „флусх=Труе“.


Затим улазимо у главни процес користећи „Иф-наме = маин_“. Ми креирамо ред тако што позивамо метод „куеуе()“ и чувамо га у променљивој „куеуе“. Затим креирамо процес позивањем корисничке функције „фунцтион2“. За ово зовемо класу „процес“. Унутар њега прослеђујемо „таргет=фунцтион2“ да позовемо функцију у процесу, преносимо аргумент „куеуе“ и чувамо га у променљивој „Усер_процесс“. Процес затим почиње позивањем методе „старт()“ са променљивом „Усер_ процесс“. Затим понављамо исту процедуру да позовемо „функцију1“ у процесу и ставимо је у променљиву „процес изградње“. Затим позивамо процесе са методом „јоин()“ да сачекамо извршење.


Сада када је представљен, можете да видите изјаве обе функције у излазу. Приказује ставке које смо додали користећи „пут()“ и „гет()“ користећи методе „гет()“, респективно.

Закључак

У овом чланку смо сазнали више о Питхон реду за вишепроцесирање. Користили смо дате илустрације. Прво смо описали како да направите ред у Питхон вишепроцесирању користећи функцију куеуе(). Затим смо користили метод „ксизе()“ да бисмо одредили ред чекања. Такође смо користили методе пут() и гет() реда. Класа спавања временског модула и насумична класа случајног модула су разматрани у последњем примеру.