Прескочи на главни садржај
Интермедиате Питхон2026-07-29 · 11 мин читања

Питхон асинц / аваит Објашњено: Водич за 2026

Асинц у Питхон-у има репутацију збуњујућег. Не мора да буде. Једном када интернализујете једну реченицу — асинц омогућава ЈЕДНОЈ нит да покрене више И/О-везаних задатака испреплетених — све остало следи.

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

Ментални модел од једне реченице

Асинхронизација у Питхон-у је кооперативна конкурентност у једној нити. Када ваш код притисне аваит, контрола се враћа у петљу догађаја, која може покренути други задатак док први чека на И/О. Када се И/О заврши, петља наставља са првим задатком од места где је паузирана.

То је то. Нема нити, нема процеса, нема паралелизма (у смислу ЦПитхон-витх-ГИЛ). Само једна нит жонглира са многим задацима који већину свог времена проводе чекајући на мрежи / диску / бази података.

Асинхронизација је бржа када ваше уско грло чека, а не рачунар.

Минимално одржив асинхронизовани програм од три реда

▶ PYTHONeditable · runs in your browser
  • асинц деф хелло() — декларише корутину. Позивање хелло() не покреће код; креира објекат корутине.
  • аваит асинцио.слееп(1) — враћа контролу у петљу догађаја на 1 секунду.
  • асинцио.рун(хелло()) — креира петљу догађаја и покреће корутину до завршетка.

Правило: `чекати` само унутар `асинц деф`. Позивање аваит у редовној функцији је СинтакЕррор.

Када асинц победи (а када не)

Асинц побеђује: И/О-везан рад

Сваки задатак који већину свог времена на зидном сату проведе ЧЕКАЈУЋИ је кандидат за асинхронизацију:

– ХТТП захтеви (спољни АПИ-ји, сцрапинг, веб-хукови)

  • Упити у бази података
  • Датотека чита / пише
  • ВебСоцкет / гРПЦ токови

– Потрошачи у реду чекања (Редис, РаббитМК, Кафка)

Пример: преузимање 100 УРЛ адреса.

▶ PYTHONeditable · runs in your browser

Убрзавање зидног сата од 50-100к за тежак И/О рад. Овде асинц зарађује свој буџет за сложеност.

Асинц ГУБИ: рад везан за ЦПУ

Асинц вам не даје паралелизам за рачунање. Пошто је кооперативна једнонитна, ЦПУ-хот петља блокира целу петљу догађаја.

▶ PYTHONeditable · runs in your browser

Сви остали задаци нестају док пбкдф2 ради. За рад везан за ЦПУ, посегните за „мултипроцессинг“ или „цонцуррент.футурес.ПроцессПоолЕкецутор“, а не за асинц.

Мешовито радно оптерећење: рун_ин_екецутор

Ако је ЈЕДАН корак тежак ЦПУ, а остатак је И/О, умотајте ЦПУ корак тако да ради у групи нити без блокирања петље:

▶ PYTHONeditable · runs in your browser

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

Четири узорка

1. Секвенцијално — један по један задатак

▶ PYTHONeditable · runs in your browser

Користите када сваки захтев зависи од резултата претходног.

2. асинцио.гатхер — пали све одједном

▶ PYTHONeditable · runs in your browser

Подразумевани избор за независне И/О задатке. Али: ако прикупите 10.000 задатака на једном АПИ-ју, добићете дескрипторе датотека са ограниченом брзином или исцрпљивањем. Ту долази до семафора.

3. Семафор — ограничење конкурентности

▶ PYTHONeditable · runs in your browser

асинцио.Семапхоре(Н) дозвољава највише Н задатака мимо асинц витх сем: у сваком тренутку. Остали задаци су у реду. Користите за било који спољни АПИ са ограничењем брзине или базу података са скупом веза.

4. Тимеоут — напустите спор рад

▶ PYTHONeditable · runs in your browser

асинцио.ваит_фор отказује основни задатак након Н секунди. Неопходан за било који асинхронизовани код који разговара са мрежом — никада немојте чекати без ограничења.

Три замке за гутање грешака

Замка 1: асинцио.гатхер са ретурн_екцептионс=Труе

▶ PYTHONeditable · runs in your browser

Корисно када желите да задржите делимичне резултате, али СМРТНО ако не проверите сваки резултат:

▶ PYTHONeditable · runs in your browser

Без провере, грешке тихо нестају.

Замка 2: Испали и заборави задатке

▶ PYTHONeditable · runs in your browser

Ако се бацкгроунд_ворк() подигне, Питхон емитује упозорење при гашењу и наставља даље. За све до чега вам је стало, сачувајте задатак и сачекајте га или користите асинцио.ТаскГроуп (3.11+) који преноси све грешке.

Замка 3: Синхронизујте код унутар асинхронизације

▶ PYTHONeditable · runs in your browser

захтеви су синхрони. Чак и унутар асинц деф, рекуестс.гет блокира целу петљу док одговор не стигне. Користите хттпк (или аиохттп) за асинхронизовани ХТТП.

Правило: никада не користите синхрони И/О библиотеку унутар асинхронизованог кода. Ако библиотека нема асинхронизовану варијанту, умотајте је у рун_ин_екецутор.

асинцио.ТаскГроуп — начин за 2026

Питхон 3.11 је додао ТаскГроуп, који јасно решава проблем "попали и заборави":

▶ PYTHONeditable · runs in your browser

Структурисана конкурентност — без изгубљених грешака, без изгубљених задатака. Преферирајте ово над голим цреате_таск у модерном коду.

Пример из стварног света: стругач са ограниченом брзином

▶ PYTHONeditable · runs in your browser

Сва четири обрасца у 15 редова: ограничена конкурентност (семафор), временска ограничења (ваит_фор), експлицитне гране грешке (без гутања) и окупљање за одвајање. Копирајте и налепите овај облик у било који асинхронизовани И/О задатак.


Асинц у Питхон-у има стварну криву учења, али ментални модел је једноставан: једна нит, кооперативан паузира на чекање, И/О се преклапа. Мастер гатхер + Семапхоре + ваит_фор + ТаскГроуп и покрићете 95% асинхронизованог посла који ћете икада написати.

Следећи корак: сениор Питхон трацк има 20 практичних лекција о асинцио-у, ТаскГроуп-у, аиохттп/хттпк-у и горе наведеним обрасцима конкурентности — са правим Питхон-ом који ради у вашем претраживачу.

Јесте ли спремни да пробате?

15 бесплатне лекције након бесплатне пријаве — без картице. Пробајте платформу, а затим одлучите.

Почните бесплатно →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.