Питхон

Водич за Питхон Асинцио

Водич за Питхон Асинцио
Асинцио библиотека је представљена у питхон 3.4 за извршавање паралелних програма са једним навојем. Ова библиотека је популарна од осталих библиотека и оквира због своје импресивне брзине и разноврсне употребе. Ова библиотека се користи у питхону за креирање, извршавање и структурирање копрограма и истовремено руковање више задатака без паралелног обављања задатака. Главни делови ове библиотеке дефинисани су у наставку:

Короутина: Дио кода који се може паузирати и наставити у скрипту са више нити назива се короутина. подпрограми раде заједно у програму са више нити. Када једна короутина застане, онда друга короутина може да се изврши.

Петља догађаја: Користи се за покретање извршавања програма и руковање улазно / излазним операцијама. Потребно је више задатака и довршите их.

Задатак: Извршење и резултат потпрограма дефинисани су задацима. Помоћу библиотеке асинцио можете доделити вишеструке задатке и асинхроно их покретати.

Будућност: Делује као будуће складиште у којем ће се резултати кореутина чувати након завршетка. Ово је корисно када било која короутина захтева да сачека резултат друге короутине.

Како можете применити горње концепте библиотеке асинцио, приказано је у овом упутству користећи неколико једноставних примера.

Пример-1: Креирајте јединствену потпрограм са једним задатком

Направите датотеку са именом асинц1.пи и додајте следећи код. асинцио библиотека је увезена да користи функције ове библиотеке. додати функција је декларисана за израчунавање збира одређеног опсега бројева. Распон бројева од 1 до 101 задатак додељује задатку са једном секундом. Петља догађаја је проглашена да ће се изводити све док се не заврше сви задаци главне методе. Након израчунавања вредности, функција ће сачекати једну секунду и исписати резултат.

увоз асинцио
асинц деф адд (старт, енд, ваит):
#Инитиализе променљиве сум
сума = 0
# Израчунај збир свих бројева
за н у опсегу (почетак, крај):
сума + = н
# Сачекајте задате секунде
чекати асинција.спавати (чекати)
# Одштампајте резултат
испис (ф'Сум од почетка до краја је збир ')
асинц деф маин ():
# Доделите један задатак
задатак = петља.цреате_таск (додај (1.101,1))
# Покрените задатак асинхроно
чекати асинција.сачекајте ([задатак])
ако је __наме__ == '__главно__':
# Објави петљу догађаја
петља = асинцио.гет_евент_лооп ()
# Покрените код док не завршите сав задатак
петља.рун_унтил_цомплете (маин ())
#Затворите петљу
петља.Близу()

Излаз:

$ питхон3 асинц1.пи

Излаз приказује збир од 1 до 101 што је 5050.

Пример-2: Креирајте више потпрограма

Употреба асинцио библиотеке ће бити обрисана када истовремено покренете више потпрограма. Направите нову датотеку са именом асинц2.пи и додајте следећи код. Три задатка се генеришу са три различита опсега и вредностима чекања у главни() метода. Први задатак ће израчунати збир од 5 до 500000 чекањем 3 секунде, други задатак ће израчунати збир од 2 до 300000 чекањем 2 секунде, а трећи задатак ће израчунати збир од 10 до 1000 чекањем 1 секунде. Задатак са малим вредностима чекања завршиће се прво, а задатак са високом вредношћу чекања ће се завршити коначно.

увоз асинцио
асинц деф адд (старт, енд, ваит):
# Иницијализирајте променљиву суме
сума = 0
# Израчунај збир свих бројева
за н у опсегу (почетак, крај):
сума + = н
# Сачекајте задате секунде
чекати асинција.спавати (чекати)
# Штампајте резултат
испис (ф'Сум од почетка до краја је збир ')
асинц деф маин ():
# Додели први задатак
задатак1 = петља.цреате_таск (додај (5.500.000,3))
# Додели други задатак
задатак2 = петља.цреате_таск (додај (2.300.000,2))
# Додели трећи задатак
задатак3 = петља.цреате_таск (додај (10,1000,1))
# Извршите задатке асинхроно
чекати асинција.сачекајте ([задатак1, задатак2, задатак3])
ако је __наме__ == '__главно__':
# Објави петљу догађаја
петља = асинцио.гет_евент_лооп ()
# Покрените код док не завршите сав задатак
петља.рун_унтил_цомплете (маин ())
#Затворите петљу
петља.Близу()

Излаз:

$ питхон3 асинц1.пи

Излаз показује да је задатак3 први довршен јер је вријеме чекања овог задатка било само 1 секунда, а задатак1 довршен задњи јер је вријеме чекања овог задатка било 3 секунде.

Пример-3: потпрограми са будућношћу

Овај пример показује употребу будућег објекта библиотеке асинцио. Направите нову датотеку са именом асинц3.пи и додајте следећи код. У овом примеру су додељена два задатка за будућност. схов_мессаге овде је декларисана функција за испис поруке пре извршавања корота и након завршетка извршења. Први задатак ће сачекати 2 секунде, а последњи. Други задатак ће сачекати 1 секунду и завршити први.

увоз асинцио
асинц деф схов_мессаге (број, сачекајте):
# Штампајте поруку
испис (ф'Таск број је покренут ')
# Сачекајте задате секунде
чекати асинција.спавати (чекати)
испис (ф'Задатак број је завршен ')
асинц деф стоп_афтер (вхен):
чекати асинција.спавати (када)
петља.зауставити()
асинц деф маин ():
# Додели први задатак
задатак1 = асинцио.суре_футуре (схов_мессаге (1,2))
принт ('Прилог 1')
# Додели други задатак
задатак2 = асинцио.суре_футуре (схов_мессаге (2,1))
принт ('Прилог 2')
# Извршите задатке асинхроно
чекати асинција.сачекајте ([задатак1, задатак2])
ако је __наме__ == '__главно__':
# Објави петљу догађаја
петља = асинцио.гет_евент_лооп ()
# Покрените код главне методе док не завршите сав задатак
петља.рун_унтил_цомплете (маин ())

Излаз:

$ питхон3 асинц3.пи

У излазу је приказано да је задатак1 покренут први и завршен задњи, а задатак2 покренут касније, али довршен први на кратко време чекања.

Закључак

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

Како променити показивач миша и величину, боју и шему курсора на Виндовс 10
Показивач миша и курсор у оперативном систему Виндовс 10 су врло важни аспекти оперативног система. То се може рећи и за друге оперативне системе, так...
Бесплатни и отворени кодни покретачки програми за развој Линук игара
Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...
Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...