+− THE DAILY DIFFdev & AI news
SHIP IT

Ukusebenza kwe-Python: ama-loop omdabu e-NumPy, ama-callback nezindleko zokuguqula

Ukuhlolwa kwezinombolo kwe-CPU kuphela okulawulwayo kulandela amanani afanayo ngama-loop e-CPython, i-arithmetic ye-NumPy, isigoqo se-Python callback kanye ne-loop ehlanganisiwe ye-Numba.

Want to see our stories first on Google? Add us to your preferred sources — it helps us grow.

Ukuhlolwa kwezinombolo kwe-CPU kuphela okulawulwayo kulandela amanani afanayo ngama-loop e-CPython, i-arithmetic ye-NumPy, isigoqo se-Python callback kanye ne-loop ehlanganisiwe ye-Numba. I-NumPy enokufakwa okulungile yaba nendondo enkulu, kuyilapho ukuguqulwa kusuka nokubuyela ohlwini lwe-Python kunciphisa lelo nzuzo kwaba ukulingana okuseduze. Isiqephu sichaza umkhawulo wokusebenza nokuthi ungalinganisa kanjani umphumela odingwa uhlelo lokusebenza.

Funda uhlelo olubhaliwe (isiNgisi) ↗

Lokho okuhlanganiswa yile vidiyo

  • I-CPython ihlanganisa ikhodi yomthombo ibe yi-bytecode. Umsebenzi ophindaphindwayo we-interpreter/object kanye ne-loop yezinombolo zomdabu enezinhlobo ezichaziwe zihlelwa ngezindlela ezihlukene zokusebenza.
  • I-arithmetic ye-NumPy yezinombolo inganikeza amaqoqo anezinhlobo ezichaziwe kumisebenzi ehlanganisiwe; i-loop ye-arithmetic isekhona, futhi ukubuka kungaba nezakhiwo ezingaxhumene.
  • Linganisani ukuguqulwa kanye nokumelela okudingekayo kokuphuma. Kulokhu kusebenza, ukuguqula uhlu lwe-Python lube ama-array nokubuyisa kwahlephula inzuzo enkulu ye-array eselungile.
  • Imisebenzi emincane ingathanda i-Python evamile ngoba izindleko zokubiza ama-array zibalulekile. Ukuqonda kwamanani ayisishiyagalombili kwanqoba lolu qhathaniso olulinganisiwe.
  • I-np.vectorize isigoqo esinikeza lula esibiza i-Python ngama-elementi alandelanayo; isikhombimsebenzisi seqoqo kuphela asimisi ukusebenza kwezinombolo zomdabu.
  • Ama-loop e-syntax ye-Python ahlanganisiwe nawo angashesha. Faka izindleko zokuhlanganisa/okusetha uma zibalulekile kulowo obizayo.
  • Ukusebenza komdabu, i-CPU SIMD, i-multithreading kanye nama-backends e-GPU yimibono ehlukene. Izici ze-CPU ezitholakalayo azilandeleli imiyalo esetshenziswe kulokho kusebenza okuthile.

Umbhalo obhaliwe ohunyushwe

Kuhunyushwe kusuka ekulandiseni kokuqala kwesiNgisi. Umsindo namazwibela atholakalayo alawulwa yi-YouTube.

Kungani i-CPU efanayo ingaqeda ngokushesha?

0:00 Ucabanga ukuthi i-Python idinga ulimi olusha ukuze isheshe. I-CPU efanayo yaqhubeka neqoqo lethu ngokushesha ngemuva kokuba i-loop ihambile. Uphi umsebenzi? Unyango luyanyamalala nini? Isiphi isinqamuleli esibuyisa i-Python? Lona yi-The Daily Diff, ngaphansi kwekhava. Qaphela leso sinqamuleli. I-CPython ukuphunyezwa okujwayelekile kwe-Python.

0:17 Ihlanganisa ikhodi yakho ibe yi-bytecode, bese isebenzisa leyo miyalo ku- interpreter. I-NumPy yilebhulali yezinombolo ama-array ayo aphethe amanani nge- uhlobo lwedatha olumenyezelwe. I-arithmetic yayo eyakhelwe ngaphakathi inganikeza iqoqo lonke kumisebenzi ehlanganisiwe. Thatha izinombolo eziyisigidi eziyintunthuko, zifake isikwele ngamunye, bese ufaka inani langempela. Zonke izinhlobo zithola amanani afanayo futhi zikhiqiza izimpendulo ezifanayo. Amanani mancane ngokwanele ukugcina umehluko wokuzungeza uphuma emncintiswaneni.

0:40 Kulo mshini, ukuqonda kwathatha cishe amashumi amathathu nantathu amaminithi. I-NumPy yathatha ngaphansi kokukodwa. Bobabili bagijima ku-CPU. Lobo ubufakazi obuwusizo kulo msebenzi, nencwadi embi kakhulu ye- ulimi lohlelo. Qala nge-loop evamile.

Umuphi umsebenzi i-loop ye-Python ewaphinda?

0:53 I-Python ithola inani elilandelayo, yenza i-arithmetic, bese ifaka impendulo. Bese ikwenza futhi. Ukuphindaphinda kushibhile. Ukuhlela ukuphindaphinda okulandelayo, nokusingatha izinto ze-Python ezizungezile, kwengeza umsebenzi isikhathi ngasinye. Lokhu ukuqaqa kwangempela komsebenzi ohloliwe. Ukuphindaphinda, ukuphindaphinda nokuhlanganisa kuvela njengemiyalo ye-bytecode. Izinhlobo ze-Python nezihumushi zenza izinqumo ezihlukene.

1:14 Lezi zikhathi zingezinhlobo ezikuso isikrini, okuyi-Python 3.10. Uhlu lwe-Python lugcina izinkomba zezinto, ngakho izinhlobo ezahlukene zezinto zingakwazi ukwabelana ngohlu. Umsebenzi wethu we-arithmetic usebenzisa izinombolo kuyo yonke indawo. Ukhokhela ukuhlela okujwayelekile ngenkathi ecela isevisi ephindaphindwayo. Cabanga uku-oda ikhofi elifanayo izigidi eziyisigidi izikhathi futhi ugcwalise ifomu elisha ngendebe ngayinye. Umshini wekhofi ulungile.

1:36 Amaphepha athuthukise umsebenzi wawo.

U-NumPy uyihambisela kuphi i-loop?

1:38 I-NumPy iyawushintsha umthetho. Leli qoqo liphethe amanani asayizi ohlakaniphile anohlobo olulodwa olumenyezelwe. Iqoqo lethu lixhumene, ngakho amanani alo ahlezi ndawonye kumemori. Ukubuka kungaba nezakhiwo ezihlukile. Umsebenzi we-arithmetic uyazi ukuthi hlobo luni lwedatha olwamukelayo. Ubizo lunikeza iqoqo kumsebenzi womdabu. I-loop isazivakashela izinombolo ngaphakathi kwekhodi ehlanganisiwe. Ingasebenzisa kabusha ulwazi lohlobo kulowo msebenzi.

2:00 I-Python ihlala ingumuntu onikezela umsebenzi. U-Itamar Turner Trauring uchaza umehluko ku-Python Speed. Izikhombimsebenzisi ze-Batch, ukuphunyezwa komdabu kanye nemiyalo ye-vector yeprosesa yizinto ezihlukene. Igama lomsebenzi linikeza ubufakazi obuncane kakhulu.

Ingabe okusheshayo kusho i-GPU noma ama-core amaningi e-CPU?

2:13 Lo mphumela usebenzise i-NumPy ku-CPU. I-backend ye-GPU njenge-CuPy ikhetha ikhaya elihlukile lama-array nemisebenzi. Ukuthenga i-GPU kushiye le-loop evamile ye-Python igijima lapho yayisivele igijima khona. Imiyalo ye-vector ye-CPU ingacubungula amanani amaningana ndawonye. I-NumPy inemishini yokukhetha ama-kernel asekela. Isikhathi sethu sokugijima sibika izici ezitholakalayo, kodwa asilandeleli imiyalo yalokhu kukhuluma. Ukunikeza yonke inzuzo elinganisiwe emiyalweni ye-vector kunganciphisa ubufakazi.

2:40 Ibhodi lokuthenga i-GPU lingahlala livaliwe. Kukhona okwanelisayo kakhulu mayelana nokulungiswa kokusebenza okuphinde kuphungule ukuthenga. Ngeshwa, i-benchmark iyaqhubeka.

Unyawo oluhle luya kuphi?

2:49 Ngezikhathi eziyisishiyagalombili, ukuqonda kwanqoba. Ukubiza imishini ye-array kubiza kakhulu kunomsebenzi omncane. Ama-array amakhulu alungile aphambili. Sisebenzise izilingo eziphindaphindwayo kanye nenqubo efudumele. Izakhiwo ezintsha ze-Python zingawushintsha umngcele. Bese ushintsha okudingwa uhlelo lokusebenza. Qala ngohlu lwe-Python bese uqeda ngohlu olusha lwe-Python. I-NumPy kufanele iguqule okokufaka kube yi-array futhi iguqule impendulo ibuye ibe izinto ze-Python.

3:11 Lezo zinyathelo zifakwa ebhalansi uma uhlelo lwakho luzidinga. Kumanani ayisigidi, leyo ndlela ephelele yathatha cishe amashumi amabili nesishiyagalombili amaminithi. Ukuqonda kwathatha cishe amashumi amabili nesishiyagalombili nawo. Ubunzima bethu obukhulu baba ukulingana okuseduze. Ingxenye esheshayo yayingokoqobo. Inzuzo yayincike ekugcineni idatha ifomu layo lezinombolo.

Iyiphi imingcele okufanele ibe sezingeni lokuqhathanisa?

3:28 Landela idatha. Uma umsebenzi olandelayo wamukela i-array, gcina i-array. Uma uguqula phakathi kwezinhlu nama-array kaningi, linganisa lezo zindima. Ukuma ngaphambi kokudlulisa okubizayo kunikeza izinombolo eziqondile ngombuzo ongalungile. Ukuphindaphinda leli qoqo kudala umphumela wesikhashana. Ukuhlanganisa amanani okuqala kudala okuphuma. Ukusebenza komdabu kusadinga imemori futhi kuthutha idatha.

3:47 Eminye imisebenzi yamukela i-buffer yokuphuma, inciphisa ukwabiwa uma ikhodi yakho ikwazi ukuyisebenzisa kabusha ngokuphepha. Ulayini owodwa omuhle unga-oda ama-buffer amaningana amakhulu. I-Python Speed nayo ikhuluma ngale nkinga. Umhloli akanandaba nokuthi wenza kanjani.

Ingabe i-loop ye-Python ehlanganisiwe nayo ingashesha?

4:00 Ungakwazi futhi ukugcina i-syntax ye-loop bese ushintsha ukusebenza kwayo. I-Numba ingahlanganisa imisebenzi ye-Python yezinombolo esekelwayo ibe ikhodi yomdabu. Nansi i-loop evela esivivinyweni sethu nomhlobiso wayo womhlanganisi. Iyalokhu ithi 'for'. Indlela ebiza kakhulu ye-interpreter isishintshile. Ngemuva kokuhlanganiswa, le loop yathatha ngaphansi kwengxenye ye-millisecond nama-array aselungile. Ukuhlanganiswa ngokwayo kwathatha cishe isekhondi kulokhu kugijima. Lezo zindleko zokusetha zakhishwa ezikhathini eziphindaphindwayo,

4:22 ngakho umsebenzi omncane owodwa udinga ukuqhathaniswa okuhlukile. Umhlahlandlela we-Numba ujabule ukubonisa ama-loop acacile. Ukuqala ukufuduka kolimi ngaphambi kokuthola indlela esheshayo kuyindlela eyinkimbinkimbi yokwenza ukugwema ukuvula i-profiler. Okokuqala thola ukuthi yini edla isikhathi. Ukulinda inethiwekhi, ukuhlela izinto kanye ne-arithmetic enkulu kudinga ukulungiswa okuhlukile. Ukusebenza kwe-array yomdabu kuyasiza uma ukubala nedatha kufana.

4:43 Linganisani umphumela odingwa umuntu okubiza. Manje-ke, mayelana naleso sinqamuleli. Unomsebenzi we-Python futhi ufuna ukuthi wamukele i-array. Isigoqo esibizwa nge-vectorize sizwakala njengenkinobho yokusebenza elahlekile. Imibhalo yaso inesisho esibalulekile esilindile.

Ngempela yini i-np.vectorize eyenzayo?

4:56 I-NumPy ithi isigoqo sayo se-vectorize sinikezwe ikakhulukazi ukuze kube lula. Ukuphunyezwa kwayo empeleni kuyi-loop. Isigoqo samukela amaqoqo, kodwa siqhubeka nokubiza umsebenzi wakho we-Python ngama- ama-elementi alandelanayo. Isikhombimsebenzisi sancipha. Umngcele wokusebenza wahlala umatasa. Buka amanani afanayo ebuya ngesiphindamshini se-Python. Ngama-array aselungile, le nguqulo yathatha cishe amashumi ayisishiyagalombili nesikhombisa amaminithi. Kwakungashesha kunokuqonda kwethu.

5:18 Isigoqo sokusakaza esiwusizo singagcina umsebenzi oqondile we-elementi ngayinye obuzama ukususa. Hlola ukuphunyezwa ngemuva kwesikhombimsebenzisi seqoqo, gcina idatha ehambisanayo ifomu layo eliwusizo, futhi ufake ukuguqulwa ekuqhathaniseni. Ama-loop omdabu, ama-callback nama-loop ahlanganisiwe angabukeka afanayo kusuka esihlalweni somuntu obizayo. Igama elithi vectorize lenza isithembiso isitobhu sakho esingakaze sisayine. Yigcine uma ukuzimela kuyilokho okudingayo. Ukuze usebenze kahle, hlola i-loop egijimayo.

Yini okufanele uyishintshe kukhodi yakho?

5:41 Isigwebo sami siwukuthi SHIP IT ukuze uhlanganise indlela esheshayo yezinombolo elinganisiwe. Gcina ama-loop avamile uma esasebenza kahle. Hlola ukuthi umsebenzi wenzeka kuphi nokuthi yini edingeka kumuntu obizayo olandelayo. Bhalisa, shaya insimbi, futhi ungitshele kumazwana uma ubungazange uyibeke ngendlela ehlukile. Futhi yilokho okumele sikubhekwe namuhla. Ngingu-Niko wase-Axrisi. Hlanganisa ngokuzibophezela.

Imithombo

  1. Universal functions (ufunc) basics — NumPy 2.2NumPy
  2. The N-dimensional array — NumPy 2.2NumPy
  3. numpy.vectorize — convenience and performance notesNumPy
  4. CPU/SIMD optimizations — NumPy 2.2NumPy
  5. dis — Disassembler for Python bytecodePython Software Foundation
  6. CPython 3.10.12 list representationCPython contributors
  7. The limits of Python vectorization as a performance techniqueItamar Turner-Trauring / Python⇒Speed
  8. Performance TipsNumba
  9. Basics of CuPyCuPy

Amavidiyo ahlobene