- Ukuhlela okungenasisekelo ku-Python kuvumela imisebenzi eminingi eboshwe yi-I/O ukuthi iqhubeke ngaphandle kokuvimbana nge
async,awaitkanye nomjikelezo womcimbi. - Ukusebenzisa amathuluzi afana
asyncio,aiohttp, abaphathi bomongo be-async kanye nokuphindaphinda kwe-async kwenza kube lula ukuxhumanisa inethiwekhi kanye nemithwalo yemisebenzi esindayo ye-API. - I-Async iphumelela kakhulu kunethiwekhi nakumafayela I/O kodwa kufanele ihambisane nezinsizakalo zokucubungula okuningi noma ezikhethekile zemisebenzi eboshwe yi-CPU.
- Imikhuba emihle—ukugwema ukuvimba izingcingo, ukunciphisa ukuvumelana kwemali kanye nokusingatha amaphutha ngomsebenzi ngamunye—kuyisihluthulelo sokubhala izinhlelo zokusebenza ezithembekile ze-async.
Ukuhlela izinhlelo ngendlela engahambisani ne-Python sekushintshe ekubeni yisihloko esibalulekile kwaba yinye yamakhono ayinhloko kunoma ubani owakha izinhlelo zokusebenza zesimanje neziphendulayo. Uma usebenza nama-web API, ama-microservices, amadeshibhodi esikhathi sangempela noma yiluphi uhlobo lokufaka/ukukhipha okunzima (I/O), cishe usufikile kulolo donga lapho ikhodi yakho ichitha isikhathi esiningi ilindile kunokwenza umsebenzi wangempela. Yilapho kanye amasu e-async ekhanya khona.
Esikhundleni sokuvumela uhlelo lwakho luhlale lungasebenzi ngenkathi ulinde inethiwekhi, idiski noma isevisi yangaphandle, ikhodi engahambisani ikuvumela ukuthi udlule lezo zikhathi zokulinda futhi ugcine uhlelo lokusebenza luhamba. Kulesi siqondisi sizohlola ngokujulile ukuthi i-async isebenza kanjani ku-Python, ukuthi ixazulula ziphi izinkinga, ukuthi isiza nini ngempela nokuthi iyithuluzi elingalungile nini, futhi sizohamba ngezibonelo eziqondile sisebenzisa async, await, asyncio kanye nemitapo yolwazi ethandwayo ye-async efana ne- aiohttp.
Kuyini i-Asynchronous Programming ku-Python?
Empeleni, ukuhlela okungenazo izindlela zokuvumelanisa kuyindlela yokuhlela ikhodi yakho ukuze imisebenzi eminingi ithuthuke ngaphandle kokuvimbana, noma ngabe yabelana ngentambo eyodwa yesistimu yokusebenza. Ngesitayela sakudala sokuvumelanisa, umsebenzi ngamunye uphela ngaphambi kokuba olandelayo uqale: shayela i-API, linda, hlola impendulo, bese uqhubeka. Ngekhodi ye-async, ungaqala imisebenzi eminingana eqhubeka isikhathi eside bese uvumela i-Python ukuthi ishintshe phakathi kwayo noma nini lapho omunye wabo elinde nje.
I-Python isebenzisa lo modeli ngenhlanganisela ye-syntax ekhethekile kanye nomhleli wokubambisana owakhelwe eduze kwe-event loop. Amagama angukhiye amabili avula konke lokhu yilawa async futhi await: uphawula imisebenzi njengengavumelanisiwe usebenzisa async def, bese uphumula ngaphakathi kwazo await noma nini lapho ushaya umsebenzi ongabuyisela ukulawula ku-event loop.
An async def umsebenzi awubuyiseli inani ngqo; ubuyisela into ye-coroutine emele ukubala okungahlelwa futhi kulindwe. Uma usebenzisa await Ngaphakathi kwalowo msebenzi, i-Python imisa i-coroutine yamanje futhi ivumele eminye imisebenzi elindile ukuthi isebenze kuze kube yilapho umsebenzi olindelwe (njengesicelo senethiwekhi) uqedwa, lapho ukwenziwa kuqala khona ngemva nje kokuthi await.
Lokhu kubalulekile: ikhodi ye-Python engavumelani ivame ukuba nentambo eyodwa, kodwa ihambisana ngomqondo wokuthi imisebenzi eminingi iqhubekela phambili kumafasitela esikhathi ahambisanayo. Ngesikhathi umsebenzi owodwa ulinde i-I/O, omunye umsebenzi uthola isikhathi se-CPU. Yingakho i-async ilungele imisebenzi eboshelwe i-I/O kodwa ayisheshisi ngokuyisimangaliso umsebenzi osindayo we-CPU.
Isifaniso Esiqondile: Imibukiso Ye-Chess Nesikhathi Sokulinda
Isifaniso esivamile esisetshenziswa emphakathini wePython ukuchaza ukwenziwa kwe-concurrency uma kuqhathaniswa nokulandelana kuvela embukisweni we-chess oqhutshwa ngesikhathi esisodwa. Cabanga ngogogo odlala nabadlali abangama-24 abangewona ama-amesha. Angawuqhuba lo mcimbi ngezindlela ezimbili ezahlukene, elandela amasu ahambisanayo nalawo angahambisaniyo.
Enguqulweni ehambisanayo, uhlala phansi nomphikisi oyedwa bese edlala lowo mdlalo owodwa kusukela ekuqaleni kuze kube sekupheleni ngaphambi kokudlulela etafuleni elilandelayo. Ukunyakaza ngakunye akwenzayo kuthatha imizuzwana emi-5, kuyilapho umuntu ngamunye ofundayo echitha cishe imizuzwana engama-55 ecabanga. Umdlalo ojwayelekile unezikhathi zokushintshana ezingama-30 (ngakho-ke izikhathi ezingama-60 sezizonke). Lokho kusho ukuthi umdlalo ngamunye uhlala (55 + 5) × 30 = imizuzwana eyi-1800, cishe imizuzu engama-30. Ngemidlalo engama-24, umcimbi wonke uthatha amahora ayi-12.
Enguqulweni engahambisani nesikhathi, uhambahamba egumbini bese enyakaza kanye ebhodini ngalinye, bese ehamba ngokushesha eya kwelinye ngenkathi umphikisi wamanje ecabanga ngempendulo yakhe. Umjikelezo owodwa wokunyakaza phezu kwamabhodi angu-24 uthatha imizuzwana engu-24 × 5 = 120, noma imizuzu emi-2. Ngemva kwemizuliswano engu-30 enjalo, isethi ephelele yemidlalo iqedwa cishe ngemizuzwana engu-3600, okungukuthi ihora eli-1.
Okubalulekile ukuthi ijubane lakhe lokudlala alizange lishintshe; okwashintsha indlela asebenzisa ngayo isikhathi sokulinda sabaphikisi. Ikhodi ye-Python engavumelani ilandela umgomo ofanayo: ayenzi i-I/O isheshe, kodwa iqinisekisa ukuthi wenza okuthile okuwusizo ngenkathi ubungeke ulinde inethiwekhi, idiski noma yimuphi umthombo wangaphandle.
Izicelo Zokuvumelanisa vs Async: Isibonelo Somhlaba Wangempela ngama-API
Enye yezindlela ezivame ukusetshenziswa kakhulu ze-async ku-Python ukubhekana nama-API angaphandle, lapho isicelo ngasinye singathatha kalula amakhulu ama-millisecond noma ngaphezulu. Isibonelo, ake sithi ufuna ukuthola inani labalandeli bama-akhawunti amaningana e-GitHub usebenzisa i-API yabo yomphakathi.
Indlela eqondile yokuvumelanisa ingasebenzisa iklayenti le-HTTP elivimbayo elidumile njenge requests. Ungenza isicelo se-GET se-endpoint yomsebenzisi ngamunye ku-loop, ufunde umthwalo we-JSON payload, ukhiphe i- followers bese uyiphrinta noma uyigcine. Lokhu kulula futhi kuyafundeka, kodwa kunephutha: kuyo yonke i-akhawunti oyicubungulayo, uhlelo luyenza isicelo bese lulinda impendulo ngaphambi kokuthi luqale nelandelayo.
Ngakho-ke uma uhlola abasebenzisi abathathu bathanda api.github.com/users/python, api.github.com/users/google futhi api.github.com/users/firebase, ikhodi ithumela isicelo sokuqala, ivimbe kuze kube yilapho i-GitHub iphendula, bese idlulela esicelweni sesibili, njalo njalo. Ngabasebenzisi abambalwa lokhu kungase kwamukeleke, kodwa njengoba uhlu lwakho lukhula lube amakhulu noma izinkulungwane, amabhaluni esikhathi sokucubungula esiphelele, ngoba uhlelo lwakho lokusebenza luchitha isikhathi esiningi sokuphila kwalo lungasebenzi, lulinde iseva ekude.
Ukuze usheshise izinto, ungashintshela ekusetshenzisweni okungenasindlela okwakhelwe phezu kwe asyncio kanye neklayenti le-HTTP elikwazi ukuvumelanisa njenge aiohttp. Kuleyo modeli, uqala imisebenzi eminingana ye-coroutine ekhipha izicelo zayo ze-HTTP cishe ngesikhathi esisodwa. I-event loop bese ilinda izimpendulo ezivela kunoma yimuphi wabo, iqalise kabusha umsebenzi ngamunye njengoba idatha ifika, kunokulinda isicelo esisodwa ukuthi siqede ngokuphelele ngaphambi kokuqala esilandelayo.
Uma ulinganisa lezi zindlela ezimbili eceleni, inguqulo ye-async ivame ukuwina ngomkhawulo obanzi, ikakhulukazi njengoba inani labasebenzisi landa. Isikhathi ngesicelo asishintshi, kodwa isikhathi esiphelele sokuthola yonke imiphumela sehla kakhulu ngoba uphatha ukuxhumana okuningi ngesikhathi esisodwa esikhundleni sokusingatha ngokulandelana.
Imiqondo Eyinhloko: Ama-Coroutine, i-Event Loop, Imisebenzi kanye Nesikhathi Esizayo
Ngaphansi kwe-hood, i-Python yesimanje engasebenzi kahle ijikeleza emabhuloki ambalwa okwakha abalulekile anikezwe ikakhulukazi yi- asyncio module. Ukuqonda le mibono kuzokwenza yonke ingxenye ye-ecosystem ingabi yimfihlakalo kakhulu futhi kukusize ukuklama izakhiwo eziqinile ze-async.
I-coroutine uhlobo olukhethekile lomsebenzi olungamisa okwesikhashana futhi luqalise ukusebenza kwalo. Kuhlelo lwanamuhla, uchaza eyodwa nge async defUma uyibiza, uthola into ye-coroutine okudingeka ilindwe noma ihlelwe; ayisebenzi ngokushesha njengomsebenzi ojwayelekile. Ngaphakathi, noma nini lapho usebenzisa await ku-elindelwe (enye i-coroutine, umsebenzi, ikusasa, njll.), i-Python imisa leyo coroutine kuze kube yilapho umsebenzi olindelwe usuphelile.
I-event loop iyi-orchestrator elandela wonke ama-coroutines alindile, imisebenzi ye-I/O kanye nezikhathi, futhi inquma ukuthi iyiphi ikhodi esebenza nganoma yisiphi isikhathi. Ngokomlando bekufanele uthole futhi uphathe iluphu ngokucacile nge asyncio.get_event_loop(), kodwa kukhodi yesimanje ye-Python iphethini ekhethwayo iwukuvumela asyncio.run() dala, sebenzisa futhi uvale iluphu yakho mayelana nomsebenzi we-async wezinga eliphezulu njenge main().
Imisebenzi iyizimbobo ezizungeze ama-coroutines ezitshela i-event loop ukuthi ihlele ukwenziwa. Ungacabanga ngazo njengemisebenzi elula: iluphu ingahlukanisa inqubekela phambili phakathi kwemisebenzi eminingi ngaphandle kokuhlanganisa imicu eminingi. Ngokuvamile udala imisebenzi nge asyncio.create_task() noma ngokubiza abasizi abanjengo asyncio.gather(), ephatha ngaphakathi iqoqo lemisebenzi.
I-Futures imelela imiphumela ezotholakala kamuva, efana ne-Promises ku-JavaScript. Imisebenzi kanye nekusasa kuyizinto ezilindelwe: ungakwazi await ukuze bamise kuze kube yilapho umsebenzi oyisisekelo uphela. Le protocol ehlanganisiwe yenza ikhodi yokuhlelwa ibe lula kakhulu, ngoba ukubhala ukugeleza kwe-async kuphelela ekulindeni izinto ezifanele ngokulandelana okulungile.
I-Async Syntax Ekusebenzeni: async, await, async with futhi async for
The async Igama elingukhiye alikhawulelwe ezincazelweni zomsebenzi; liphinde lidlulele kubaphathi bokuqukethwe kanye nama-loop ukuze amaphethini athuthukile akwazi ukuhlanganyela ezweni le-async. Ukwazi lolu hlelo olude lwe-syntax kukusiza ukuthi ubhale ikhodi enhle ezungeze ukuxhumana kwenethiwekhi, amaseshini, ukusakazwa kanye nezinqubo ezenziwe ngokwezifiso.
Ifomu elivame kakhulu yileli async def, okuchaza umsebenzi ongahambisani (ifektri ye-coroutine). Ngaphakathi komsebenzi onjalo, uzosebenzisa ngokukhululekile await noma nini lapho ubiza omunye umsebenzi we-coroutine noma okulindelekile, njengokuthi asyncio.sleep(), isicelo se-HTTP esingavumelani, noma umbuzo wesizindalwazi esingavumelani. Qaphela ukuthi awukwazi ukusebenzisa await ngqo ezingeni eliphezulu leskripthi; kumele ihlale ngaphakathi async def.
Ngenkathi ungase ulingeke ukuthi ushayele ucingo time.sleep() ngaphakathi kwe-coroutine yakho ukuze kube nokubambezeleka, lokho kungawunqoba ngokuphelele umgomo wokusebenzisa i-async. time.sleep() ivimba yonke intambo, kufaka phakathi i-event loop, ngakho-ke akukho omunye umsebenzi we-async ongaqhubeka phakathi naleso sikhathi. Esikhundleni salokho, kufanele usebenzise i-counterpart engavimbi asyncio.sleep(), okubuyisela ukulawula emuva ku-loop ngenkathi isibali sikhathi sibala phansi.
I-Python iphinde isekele abaphathi bomongo abangavumelani nge- async with, esetshenziswa ngokuchaza izindlela ezikhethekile __aenter__ futhi __aexit__. Lokhu kuwusizo kakhulu lapho usebenza ngezinto ezidinga ukusetha okuhlanzekile kanye nochungechunge lokuhlukaniswa kwemisebenzi oluhlanganisa imisebenzi engahambisani nesikhathi, njengokuvula iseshini yenethiwekhi noma ukuthola insiza ye-async. Isibonelo esijwayelekile ukuphatha i- aiohttp.ClientSession noma isicelo se-HTTP ngasinye sisebenzisa async with ukuvimba esikhundleni sokubiza ngesandla close().
Ekugcineni, i-asynchronous iteration ivezwa ngokusebenzisa async for, okuncike ezindleleni zomlingo __aiter__ futhi __anext__ kuchazwe ku-PEP 492. Ama-iterators e-Async kanye nama-generator e-async akuvumela ukuthi ukhiqize izinto ngokuhamba kwesikhathi usebenzisa await ngaphakathi kwenqubo yokuphindaphinda, efanelekile ekusakazeni idatha efika kancane kancane ngenethiwekhi noma komunye umthombo ongavumelanisiwe.
Ukwenza Imisebenzi Eminingi Ngesikhathi Esifanayo asyncio
Amandla angempela ohlelo lwe-asynchronous abonakala uma uqhuba imisebenzi eminingana eboshwe yi-I/O ngesikhathi esisodwa kunokuba usebenze owodwa emva komunye. Kuhlelo lwe-Python lwe-async, amathuluzi ayinhloko alokho yilawa asyncio.create_task() futhi asyncio.gather(), kokubili okuhlela ama-coroutines ku-event loop.
With asyncio.gather(), ungaqala ama-coroutine amaningi ngesikhathi esisodwa bese ulinda kuze kube yilapho wonke eseqedile, uthola imiphumela yawo njengohlu noma i-tuple. Lokhu kuvame kakhulu ngamaqoqo ezingcingo ze-HTTP, imibuzo yedathabheyisi noma noma yikuphi ukusebenza okuphindaphindiwe okungahambisani. Ngaphansi kwe-hood, gather() ihlanganisa i-coroutine ngayinye ibe umsebenzi futhi iqinisekise ukuthi yonke iqhutshwa kuze kube sekuqedweni.
Uma ubuyela esibonelweni sokulanda amaphrofayili e-GitHub kodwa uyiphinda usebenzise aiohttp futhi asyncio.gather(), uzogcina unezingcingo ezintathu kumsebenzi ofana no fetch_user() kwethulwa ngesikhathi esisodwa. Umsebenzi ngamunye uqala isicelo sawo se-HTTP, unikeze ukulawula ngenkathi ulinde idatha, bese uqala kabusha ukuhlola impendulo uma ifika. Ngokombono womsebenzisi, yonke imiphumela emithathu ivele cishe ngesikhathi esisodwa.
Kodwa-ke, kunezimo lapho ungafuni ukwenza imisebenzi eyizinkulungwane noma eyizigidi ngesikhathi esisodwa, ngoba lokho kungadlula umshini wakho noma kufinyelele imikhawulo yesilinganiso sangaphandle. Iphethini evamile ukuvala i-concurrency ngokucubungula kuphela MAX_TASKS imisebenzi ngesikhathi esisodwa, kungaba kusetshenziswa ama-semaphores, amachibi ahlanganisiwe, noma i-logic yokuhlanganisa ngesandla ngaphakathi komsebenzi wakho we-async.
Esinye isici esibalulekile lapho usebenzisa imisebenzi eminingi ngasikhathi sinye ukuthi uphatha kanjani amaphutha; ukuvumela isicelo esisodwa esihlulekayo sishaye yonke inqwaba akuvamile ukwamukeleka ezinhlelweni zangempela. Ngokufanelekile, i-async orchestration yakho kufanele ibambe futhi iphathe okuhlukile ngomsebenzi ngamunye, mhlawumbe ikubhale phansi, izame kabusha ngokukhetha noma ibuyise imiphumela engaphelele ngenkathi igcina lonke iqembu lingasebenzi.
Ukuphatha Izivumelwano: Izinzuzo Nezingozi
Kubalulekile ukuhlukanisa engqondweni yakho imibono ye-concurrency kanye ne-parallelism, ngoba i-async Python iletha eyokuqala kodwa hhayi eyokugcina ngempela. I-Concurrency isho ukuthi imisebenzi eminingi iyathuthuka ngezikhathi ezihambisanayo, kuyilapho i-parallelism isho ukuthi isebenza ngesikhathi esifanayo kuma-core amaningi e-CPU.
Ikhodi ejwayelekile ye-asynchronous esebenzisa asyncio ayidali imicu eminingi ye-OS; kunalokho, iphindaphinda imisebenzi kuntambo eyodwa ngokuya ngokuthi ngayinye ivinjiwe nini ku-I/O, njengokungathi uhlelo lokusebenza ku-Node.js. Yingakho ikhula kahle kakhulu ngezinkulungwane zokuxhumeka: ukushintshashintsha komongo kushibhile ngoba kuyabambisana futhi kulawulwa yi-event loop kunesistimu yokusebenza.
Lo mklamo uza nezinselele, ikakhulukazi mayelana nokuxhumana kanye nokuphathwa kwemisebenzi ehlukile. Ngenxa yokuthi ukucabanga kwakho manje sekusabalele ezinhlotsheni eziningana ezihlangana ngokuhamba kwesikhathi, kufanele ube nomqondo oqondile lapho wabelana ngesimo, usakaza amaphutha futhi uhlanza izinsiza. Amaphutha afana nokukhohliwe await, imisebenzi engakaze ilindwe, noma okuhlukile okugwinywe buthule emisebenzini yangemuva kungaba nzima futhi kube nzima ukukulungisa.
Ukuze ugcine isisekelo sakho sekhodi ye-async silondolozeka, kufanele ulandele imikhuba yobunjiniyela eqinile: gcina ama-coroutines egxile emthwalweni owodwa, hlanganisa ukuphathwa kwamaphutha lapho kungenzeka khona, futhi wengeze ukungena ngemvume okwanele ukuze uqonde ukuthi kwenzekani ngesikhathi sokusebenza. Amathuluzi amahle kanye nezindlela ezicacile zisiza kakhulu ekuvimbeleni izinkinga ezifana nezimo zomjaho noma ukuvuza kwezinsiza, ngisho nasendaweni eyodwa ye-async.
Lapho Ikhodi Engavumelani Nezimo Isiza Ngempela (Futhi Uma Ingasizi)
Ukuhlela okuhambisanayo kusebenza kahle kakhulu emisebenzini eboshiwe yi-I/O, kodwa akuyona inkinga enhle kuzo zonke izinkinga zokusebenza. Isinyathelo sokuqala kunoma yimuphi umzamo wokwenza ngcono kufanele kube ukubona ukuthi izithiyo zakho zivela ekubalweni okuboshwe yi-I/O noma ekubalweni okuboshwe yi-CPU.
Uma uhlelo lwakho lokusebenza luchitha isikhathi esiningi lulinde izimpendulo zenethiwekhi, ukufunda nokubhala amafayela, ukubuza ngemininingwane noma ukuxhumana ngama-sockets, khona-ke i-async cishe ifanelekile. Izibonelo ezijwayelekile zifaka phakathi ama-web API akhuluma ngezinsizakalo eziningi zangaphandle, amapayipi e-ETL afunda futhi abhalele imithombo yedatha eminingana ngasikhathi sinye, kanye nama-microservices agcina ukuxhumana okuningi kwamakhasimende ngasikhathi sinye.
Ngakolunye uhlangothi, uma umthwalo wakho womsebenzi ulawulwa imisebenzi enzima ye-CPU njengokuqhekeka kwezinombolo, ukucubungula izithombe, noma ukulingisa okuyinkimbinkimbi, i-async yodwa ngeke isheshise izinto. Ezimweni ezinjalo, i-GIL (Global Interpreter Lock) isakhawulela lokho okungasebenza ngokufana ngaphakathi kwenqubo eyodwa ye-Python. Ngokuvamile uzothola imiphumela engcono ngokucubungula okuningi, izandiso zomdabu, noma ukusebenzisa ama-backend akhethekile.
Ezindaweni zezinkampani, isu elisebenzayo ukuhlanganisa lawa masu: ukusebenzisa ama-SDK asyncio kanye nama-SDK aqaphela i-async kumasevisi efu (i-AWS, i-Azure nabanye) ukunciphisa ukubambezeleka nokwandisa umthamo, ngenkathi kunikezwa umsebenzi odinga i-CPU ekwahlukaniseni izinqubo, abasebenzi noma izinsizakalo zokubala eziphethwe. Ngaleyo ndlela usebenzisa amandla ethuluzi ngalinye esikhundleni sokulwa nesikhathi sokusebenza kolimi.
Imikhuba Emihle Yokubhala i-Async Python
Uma usuqalile ukusebenzisa i-async kabanzi, amaphethini nemikhuba ethile kuzokusiza ugweme izingibe ezivame kakhulu. Futhi benza ikhodi yakho icace nakakhulu kubadlali beqembu okungenzeka ukuthi abakajwayelani kahle ne-async ecosystem okwamanje.
Umthetho oyisisekelo ukugwema ukuvimba izingcingo ezindleleni zakho zekhodi ezingahambisani. Lokho kusho ukushintsha izinto ezifana time.sleep() nge await asyncio.sleep(), kanye nokuqaphela ngamalabhulali anganikeli ama-API ahambisana ne-async. Uma iphakheji yomuntu wesithathu ihambisana kuphela, ukuyibiza kakhulu kusuka ku-coroutine kungavimba i-event loop futhi konakalise izinzuzo zakho ze-concurrency.
Noma nini lapho uneqoqo lemisebenzi ye-I/O ezimele, khetha ukuyisebenzisa ngasikhathi sinye usebenzisa izinsiza ezifana asyncio.gather() noma iqoqo lemisebenzi evinjwe yizinga eliphezulu lemali ehambisanayo. Le phethini yandisa ukugeleza kwe-bandwidth ngenkathi isalawula inani lokuxhumeka okuvulekile noma izicelo ezindizeni.
Njengesiqondiso sokuklama, zama ukugcina ama-coroutines emancane futhi egxile emthwalweni ocacile, ngendlela obungaklama ngayo imisebenzi kukhodi ehlanzekile ehambisanayo. Ama-coroutine amakhulu amakhulu ahlanganisa ukuxhumana, ukucabanga kwebhizinisi kanye nokuphathwa kwamaphutha ngokushesha kuba nzima ukuwahlola nokuwacabanga, ikakhulukazi lapho okuthile kwehluleka phakathi nesikhathi.
Okokugcina, hlola njalo ukuthi izingxenye zemvelo othembele kuzo ziyakusekela ngempela yini ukusetshenziswa okungalingani. Imitapo yolwazi eminingi ethandwayo inikeza amaklayenti ahlukene e-async noma ama-submodule azinikele; amanye angase asavimba ngaphansi kwe-hood noma ngabe akhangisa izici "ze-async". Ukufunda amadokhumenti ngokucophelela nokwenza izilinganiso ezincane kungakusindisa ekubuyeleni kokusebenza okucashile.
Izimo Zokusetshenziswa Eziwusizo Nemibono Yokwakha
Kumaphrojekthi wesofthiwe wangempela, i-async ikhanya ezinhlobonhlobo zezakhiwo, kusukela kuma-backend ewebhu endabuko kuya ezinhlelweni ezisebenza nge-AI ezisezingeni eliphezulu. Into ehlanganisayo njalo isidingo sokusingatha imisebenzi eminingi eboshiwe yi-I/O ngaphandle kokuchitha isikhathi ulinde ungenzi lutho.
Esinye isimo esivamile isevisi yewebhu edinga ukushayela ama-API amaningana angaphandle ukuze yakhe impendulo eyodwa yeklayenti. Ukusebenzisa i-async, isevisi ingaqalisa zonke izicelo eziphumayo ngesikhathi esisodwa futhi ihlanganise umthwalo wokugcina ngokushesha nje lapho ucezu ngalunye lufika, inciphise isikhathi sokuphendula ngokuphelele. Lokhu kuvamile ekwakhiweni kwezinsizakalo ezincane kanye nokuhlanganiswa namasango okukhokha, amanethiwekhi omphakathi noma amapulatifomu okuhlaziya.
Esinye isimo esibalulekile sokusetshenziswa ubunjiniyela bedatha: amapayipi nemisebenzi ye-ETL kuvame ukusebenzisana nezizindalwazi eziningi, izinhlelo zamafayela noma amabhakede okugcina amafu ngesikhathi esifanayo. Ngokufunda emithonjeni eminingana ngesikhathi esisodwa nokubhala imiphumela ngokushesha nje lapho isilungile, wehlisa ukubambezeleka okuphelele futhi usebenzise kangcono i-bandwidth etholakalayo, ikakhulukazi uma usebenza ngesitoreji samafu noma ama-API edatha asekelwe ku-REST.
I-Async idlala kahle namadeshibhodi obuhlakani bebhizinisi namathuluzi afana ne-Power BI, lapho ama-backend kumele ahlanganise idatha evela kumasevisi ahlukene ngaphandle kokuvimba ukuxhumana kwe-HTTP okusebenza isikhathi eside. Ukwakha izendlalelo zakho ze-API ezenziwe ngokwezifiso noma izinsizakalo ezincane zokuhlanganisa nge asyncio kungathuthukisa ukusabela okubonwayo kanye nokusetshenziswa kwamandla ngaphansi komthwalo.
Izinkampani ezingochwepheshe kwisofthiwe eyenziwe ngokwezifiso, ubuhlakani bokwenziwa, ukuphepha kwe-cyber kanye nokubonisana ngamafu zivame ukuthembela kakhulu kumasu avumelanisiwe ukuhlela imisebenzi ebiza amamodeli e-AI, iloge imicimbi, iqaphe izinsongo futhi ikhulume nezindiza zokulawula amafu. Ukuhlanganisa i-async I/O yokuhlelwa kabusha nezisebenzi ezihlukile ezilungiselelwe i-CPU zokuphakamisa okunzima kuyiphethini yangaphakathi evamile eveza izinhlelo ezikwazi ukukhuliswa nezinakekelwayo.
Kwabathuthukisi abaningi namaqembu, isinyathelo sokuqala ukumane nje wethule i-async ezingxenyeni zohlelo lokusebenza ezikhala ngokusobala ngokuthi “I/O-bound,” bese ziphinda zibuyele lapho njengoba izinzuzo ziba sobala futhi iqembu lithola ukuzethemba ngezimiso kanye namathuluzi.
Ekugcineni, uhlelo olungenazo izinsiza ku-Python lumayelana nokusebenzisa isikhathi sokulinda ngokuhlakanipha: ngokuhlela ikhodi yakho nxazonke async, await, ama-coroutine kanye ne-event loop, ungakha izinhlelo zokusebenza ezizwakala zishesha, zikhule kangcono uma zilayishwa futhi zisebenzise kahle izinsiza ezitholakalayo, ikakhulukazi uma usebenzisana namanethiwekhi, amafayela kanye nezinsizakalo zangaphandle.
