# የፓይዘን አፈጻጸም፡ ቤተኛ NumPy loops፣ የጥሪ ተግባራት እና የመቀየር ወጪዎች

Published: 2026-10-17

ቁጥጥር የተደረገበት ሲፒዩ-ብቻ የቁጥር ሙከራ ተመሳሳይ እሴቶችን በCPython loops፣ NumPy አርቲሜቲክ፣ የፓይዘን ጥሪ ተግባር መጠቅለያ እና በተጠናቀረ የNumba loop ውስጥ ያልፋል። ዝግጁ-ግብአት NumPy ትልቅ መሪ ነበረው፣ የፓይዘን ዝርዝሮች መቀየር እና ወደኋላ መመለስ ግን ያንን ጥቅም ወደ ቅርብ እኩልነት ቀንሶታል። ክፍሉ የአፈጻጸም ወሰን እና አንድ መተግበሪያ የሚፈልገውን ውጤት እንዴት መለካት እንደሚቻል ያብራራል።

Canonical: https://thedailydiff.dev/am/video/2026-10-17-python-native-loops/

## ይህ ቪዲዮ ምን ይሸፍናል

- CPython ምንጩን ወደ ባይትኮድ ያጠናቅራል። ተደጋጋሚ የአስተርጓሚ/ነገር ስራ እና የተፃፈ ቤተኛ የቁጥር loop የተለያዩ የአፈጻጸም ዝግጅቶች ናቸው።
- የቁጥር NumPy አርቲሜቲክ የተፃፉ ባቾችን ወደ ተጠናቀሩ ስራዎች ማስተላለፍ ይችላል፤ የአርቲሜቲክ loop አሁንም አለ፣ እና እይታዎች የማይገናኙ አቀማመጦች ሊኖራቸው ይችላል።
- መቀየርን እና የሚፈለገውን የውጤት አቀራረብ ይለኩ። በዚህ አሂድ ውስጥ፣ የፓይዘን ዝርዝሮችን ወደ arrays መቀየር እና መልሶ መመለስ ትልቁን የዝግጁ-array መሪነት አጠፋው።
- ትናንሽ የስራ ጫናዎች የተለመደውን ፓይዘን ሊመርጡ ይችላሉ ምክንያቱም ቋሚ የarray-call ወጪዎች ጠቃሚ ናቸው። የስምንት-እሴት ኮምፕሪሄንሽን ይህንን የተለካ ንጽጽር አሸንፏል።
- np.vectorize ለተከታታይ ኤለመንቶች ፓይዘንን የሚጠራ ምቹ መጠቅለያ ነው፤ የባች በይነገጽ ብቻ ቤተኛ የቁጥር አፈጻጸምን አያቋቁምም።
- የተጠናቀሩ የፓይዘን-ሰዋሰው loopsም ፈጣን ሊሆኑ ይችላሉ። ለጠሪው አስፈላጊ ከሆነ ቀዝቃዛ የማጠናቀር/የማዋቀር ወጪዎችን ያካትቱ።
- ቤተኛ አፈጻጸም፣ ሲፒዩ SIMD፣ ባለብዙ-ክር እና ጂፒዩ ባከንዶች የተለዩ ሀሳቦች ናቸው። ያሉት የሲፒዩ ባህሪያት በተለየ አሂድ ውስጥ ጥቅም ላይ የዋሉትን መመሪያዎች አይከታተሉም።

## ምዕራፎች

- 0:00 ተመሳሳይ ሲፒዩ ቀድሞ ማጠናቀቅ የሚችለው ለምንድን ነው?
- 0:52 አንድ የፓይዘን loop ምን ስራ ይደግማል?
- 1:38 NumPy loopን ወዴት ያንቀሳቅሳል?
- 2:13 ፈጣን ማለት ጂፒዩ ወይስ ብዙ የሲፒዩ ኮሮች ማለት ነው?
- 2:49 አስደናቂው የፍጥነት መጨመር መቼ ይጠፋል?
- 3:28 የትኞቹ ወሰኖች በቤንችማርክ ውስጥ መካተት አለባቸው?
- 4:00 የተጠናቀረ የፓይዘን loopም ፈጣን ሊሆን ይችላል?
- 4:56 np.vectorize በትክክል ምን ያከናውናል?
- 5:41 በኮድዎ ውስጥ ምን መለወጥ አለብዎት?

## የተተረጎመ ግልባጭ

ከዋናው የእንግሊዝኛ ትረካ የተተረጎመ። የሚገኙ ኦዲዮ እና መግለጫ ጽሑፎች በYouTube ቁጥጥር ስር ናቸው።

### ተመሳሳይ ሲፒዩ ቀድሞ ማጠናቀቅ የሚችለው ለምንድን ነው?

0:00 ፓይዘን ፈጣን ለመሆን አዲስ ቋንቋ እንደሚያስፈልገው ያስባሉ። ተመሳሳይ ሲፒዩ loop ከተንቀሳቀሰ በኋላ የእኛን ባች በፍጥነት አከናውኗል። ስራው ወዴት ሄደ? የፍጥነት መጨመር መቼ ይጠፋል? የትኛው አቋራጭ ፓይዘንን ይመልሳል? ይህ The Daily Diff ነው፣ ከሽፋኑ ስር። ያንን አቋራጭ መንገድ ይከታተሉት። CPython መደበኛው የፓይዘን አተገባበር ነው።

0:17 የእርስዎን ምንጭ ወደ ባይትኮድ ያጠናቅራል፣ ከዚያም እነዚያን መመሪያዎች በአንድ አስተርጓሚ ውስጥ ያካሂዳል። NumPy የቁጥር ቤተ-መጽሐፍት ሲሆን arrayዎቹ እሴቶችን ከ ከተገለጸ የውሂብ አይነት ጋር ይይዛሉ። የእሱ የተገነባው አርቲሜቲክ ሙሉ ባች ወደ ተጠናቀሩ ስራዎች ማስተላለፍ ይችላል። አንድ ሚሊዮን ተንሳፋፊ ነጥብ እሴቶችን ውሰዱ፣ እያንዳንዱን ካሬ አድርጉ፣ ከዚያም ዋናውን እሴት ጨምሩበት። እያንዳንዱ ስሪት ተመሳሳይ እሴቶችን ያገኛል እና የሚዛመዱ መልሶችን ያወጣል። እሴቶቹ የመጠጋጋት ልዩነቶችን ከውድድሩ ለማስወገድ በቂ ናቸው።

0:40 በዚህ ማሽን ላይ፣ ኮምፕሪሄንሽኑ ወደ ሠላሳ ሦስት ሚሊሰከንዶች ያህል ወሰደ። NumPy ከአንድ ያነሰ ወሰደ። ሁለቱም በሲፒዩ ላይ ሠርተዋል። ይህ ለዚህ የስራ ጫና ጠቃሚ ማስረጃ ነው፣ እና ለፕሮግራሚንግ ቋንቋ አስከፊ ማስታወቂያ። በተለመደው loop ጀምር። ይህ ለዚህ የስራ ጫና ጠቃሚ ማስረጃ ነው፣ እና ለፕሮግራሚንግ ቋንቋ አስከፊ ማስታወቂያ። በተለመደው loop ጀምር።

### አንድ የፓይዘን loop ምን ስራ ይደግማል?

0:53 ፓይዘን ቀጣዩን እሴት ያገኛል፣ አርቲሜቲክን ያከናውናል፣ እና መልሱን ይጨምራል። ከዚያም እንደገና ያደርገዋል። ማባዛቱ ርካሽ ነው። ቀጣዩን ማባዛት ማዘጋጀት፣ እና በዙሪያው ያሉትን የፓይዘን ነገሮች ማስተናገድ፣ በየጊዜው ስራ ይጨምራል። ይህ የተፈተነው ተግባር ትክክለኛ መበታተን ነው። መደጋገም፣ ማባዛትና መደመር እንደ ባይትኮድ መመሪያዎች ይታያሉ። የፓይዘን ስሪቶች እና አስተርጓሚዎች የተለያዩ ምርጫዎችን ያደርጋሉ።

1:14 እነዚህ ሰዓቶች በማያ ገጹ ላይ ላለው ስሪት የተወሰኑ ናቸው፣ እሱም ፓይዘን ሶስት አስር ነው። የፓይዘን ዝርዝር የነገሮችን ማጣቀሻዎች ያከማቻል፣ ስለዚህ የተለያዩ አይነት ነገሮች አንድ ዝርዝር ሊጋሩ ይችላሉ። የእኛ አርቲሜቲክ ስራ ቁጥሮችን በሙሉ ይጠቀማል። ተደጋጋሚ አገልግሎት እየጠየቀ ለአጠቃላይ ዝግጅት ይከፍላል። ተመሳሳይ ቡናን አንድ ሚሊዮን ጊዜ ማዘዝ እና ለእያንዳንዱ ኩባያ አዲስ ቅጽ መሙላት አስቡት። ተመሳሳይ ቡናን አንድ ሚሊዮን ጊዜ ማዘዝ እና ለእያንዳንዱ ኩባያ አዲስ ቅጽ መሙላት አስቡት። የቡና ማሽኑ ጥሩ ነው።

1:36 ወረቀቶቹ የራሳቸውን ስራ ፈጥረዋል።

### NumPy loopን ወዴት ያንቀሳቅሳል?

1:38 NumPy ውሉን ይለውጣል። ይህ array ቋሚ መጠን ያላቸው ተንሳፋፊ ነጥብ እሴቶችን ከአንድ ከተገለጸ አይነት ጋር ይይዛል። የእኛ array ተከታታይ ነው፣ ስለዚህ እሴቶቹ በማስታወሻ ውስጥ አንድ ላይ ተቀምጠዋል። እይታዎች ሌሎች አቀማመጦች ሊኖራቸው ይችላል። የአርቲሜቲክ ስራው ምን አይነት ውሂብ እንደሚቀበል ያውቃል። ጥሪው ባቹን ወደ ቤተኛ ኦፕሬሽን ያስተላልፋል። አንድ loop አሁንም በተጠናቀረ ኮድ ውስጥ ያሉትን እሴቶች ይጎበኛል። በዚያ ስራ ውስጥ ያለውን አይነት እውቀት እንደገና መጠቀም ይችላል።

2:00 ፓይዘን ስራውን የሚያስረክበው ሰው ሆኖ ይቆያል። ይተመር ተርነር ትራውሪንግ በPython Speed ውስጥ ያለውን ልዩነት ያብራራል። ባች በይነገጾች፣ ቤተኛ አተገባበሮች እና ፕሮሰሰር የቬክተር መመሪያዎች የተለያዩ ነገሮች ናቸው። የተግባሩ ስም በጣም ትንሽ ማስረጃ ይሰጣል።

### ፈጣን ማለት ጂፒዩ ወይስ ብዙ የሲፒዩ ኮሮች ማለት ነው?

2:13 ይህ ውጤት NumPyን በሲፒዩ ላይ ተጠቅሟል። እንደ CuPy ያለ የጂፒዩ ባከንድ ለ arrays እና ኦፕሬሽኖች የተለየ ቤት ይመርጣል። ጂፒዩ መግዛት ይህን የተለመደ የፓይዘን loop ቀድሞ በሚሰራበት ቦታ እንዲሰራ ያደርገዋል። የሲፒዩ ቬክተር መመሪያዎች በርካታ እሴቶችን አንድ ላይ ማካሄድ ይችላሉ። NumPy የሚደገፉ ከርነሎችን ለመምረጥ የሚያስችል ዘዴ አለው። የእኛ runtime ያሉትን ባህሪያት ሪፖርት ያደርጋል፣ ነገር ግን የዚህን አገላለጽ መመሪያዎችን አይከታተልም። ሙሉውን የተለካውን ጥቅም ለቬክተር መመሪያዎች መስጠት ማስረጃውን ማጋነን ይሆናል። ሙሉውን የተለካውን ጥቅም ለቬክተር መመሪያዎች መስጠት ማስረጃውን ማጋነን ይሆናል።

2:40 የጂፒዩ የግብይት ጋሪ ተዘግቶ ሊቆይ ይችላል። ግዢንም የሚሰርዝ የአፈጻጸም ማስተካከያ ውስጥ በጣም የሚያረካ ነገር አለ። ግዢንም የሚሰርዝ የአፈጻጸም ማስተካከያ ውስጥ በጣም የሚያረካ ነገር አለ። በሚያሳዝን ሁኔታ፣ የቤንችማርክ ይቀጥላል።

### አስደናቂው የፍጥነት መጨመር መቼ ይጠፋል?

2:49 በስምንት እሴቶች፣ ኮምፕሪሄንሽኑ አሸንፏል። የarray ማሽነሪ መጥራት ከትንሽ ስራው የበለጠ ወጪ አወጣ። ትላልቅ ዝግጁ arrayዎች ቀድመው ነበር። ተደጋጋሚ ሙከራዎችን እና የሞቀ ሂደትን ተጠቀምን። አዳዲስ የፓይዘን ግንባታዎች መሻገሪያውን ሊለውጡ ይችላሉ። ከዚያም አፕሊኬሽኑ የሚፈልገውን ይለውጡ። በፓይዘን ዝርዝር ጀምር እና በአዲስ የፓይዘን ዝርዝር ጨርስ። NumPy ግብአቱን ወደ array መቀየር እና መልሱን ወደ ፓይዘን ነገሮች መመለስ አለበት።

3:11 እነዚያ እርምጃዎች አፕሊኬሽንዎ የሚፈልጋቸው ከሆነ በሂሳቡ ላይ መካተት አለባቸው። በአንድ ሚሊዮን እሴቶች፣ ያ ሙሉ መንገድ ወደ ሃያ ስምንት ሚሊሰከንዶች ያህል ወሰደ። ኮምፕሪሄንሽኑም ወደ ሃያ ስምንት ያህል ወሰደ። የእኛ ድራማዊ መሪነት ወደ ቅርብ እኩልነት ተለወጠ። ፈጣኑ ክፍል እውነት ነበር። ጥቅሙ መረጃው በቁጥር ቅርጹ እንዲቆይ መፍቀድ ላይ የተመካ ነበር።

### የትኞቹ ወሰኖች በቤንችማርክ ውስጥ መካተት አለባቸው?

3:28 መረጃውን ይከተሉ። ቀጣዩ ኦፕሬሽን array የሚቀበል ከሆነ arrayውን ያቆዩት። በዝርዝሮች እና arrayዎች መካከል በተደጋጋሚ የሚቀይሩ ከሆነ፣ እነዚያን መሻገሪያዎች ይለኩ። ከውድ ዋጋ ማስተላለፍ በፊት ማቆም ለተሳሳተ ጥያቄ ትክክለኛ ቁጥሮችን ይሰጣል። ይህን array ማባዛት ጊዜያዊ ውጤት ይፈጥራል። የመጀመሪያዎቹን እሴቶች መጨመር ውጤቱን ይፈጥራል። ቤተኛ አፈጻጸም አሁንም ማህደረ ትውስታ እና የውሂብ እንቅስቃሴ ያስፈልገዋል።

3:47 አንዳንድ ኦፕሬሽኖች የውጤት buffer ይቀበላሉ፣ ይህም ኮድዎ በአስተማማኝ ሁኔታ እንደገና መጠቀም ሲችል ምደባዎችን ይቀንሳል። አንዳንድ ኦፕሬሽኖች የውጤት buffer ይቀበላሉ፣ ይህም ኮድዎ በአስተማማኝ ሁኔታ እንደገና መጠቀም ሲችል ምደባዎችን ይቀንሳል። አንዲት ቆንጆ መስመር ብዙ ትላልቅ buffersን ማዘዝ ትችላለች። Python Speed ይህን ችግርም ያመለክታል። የአከፋፋዩ ለአስተዋይነትዎ በሚያስገርም ሁኔታ ደንታ የለውም።

### የተጠናቀረ የፓይዘን loopም ፈጣን ሊሆን ይችላል?

4:00 loop ሰዋሰው ማቆየት እና አፈጻጸሙን መቀየርም ይችላሉ። Numba የሚደገፉ የቁጥር ፓይዘን ተግባራትን ወደ ቤተኛ ኮድ ማጠናቀር ይችላል። የእኛን ሙከራ loop ከcompiler decorator ጋር እነሆ። አሁንም 'for' ይላል። ውድ የሆነው የአስተርጓሚ መንገድ ተለውጧል። ከተጠናቀረ በኋላ፣ ይህ loop ከተዘጋጁ arrayዎች ጋር ከግማሽ ሚሊሰከንድ በታች ወሰደ። ማጠናቀሩ ራሱ በዚህ አሂድ ውስጥ ወደ አንድ ሰከንድ ያህል ወሰደ። ያ የማዋቀር ወጪ ከተደጋጋሚ ሰዓቶች ውጭ ተደርጓል፣

4:22 ስለዚህ ትንሽ የአንድ ጊዜ ስራ የተለየ ንጽጽር ይገባዋል። የNumba የራሱ መመሪያ ግልጽ loopsን ለማሳየት ደስተኛ ነው። ሙቅ መንገድን ከማግኘቱ በፊት የቋንቋ ፍልሰት መጀመር ፕሮፋይለር ከመክፈት ለመዳን የተወሳሰበ መንገድ ነው። በመጀመሪያ ጊዜ ምን እንደሚወስድ ይፈልጉ። የኔትወርክ መጠበቆች፣ የነገር መተንተን እና የጅምላ አርቲሜቲክ የተለያዩ ማስተካከያዎችን ይጠይቃሉ። ስሌቱ እና መረጃው ሲገጥሙ ቤተኛ array ኦፕሬሽኖች ይረዳሉ።

4:43 ጠሪዎ በትክክል የሚፈልገውን ውጤት ይለኩ። አሁን ወደዚያ አቋራጭ መንገድ። የፓይዘን ተግባር አለዎት እና array እንዲቀበል ይፈልጋሉ። vectorize የሚባል መጠቅለያ የጎደለው የአፈጻጸም ቁልፍ ይመስላል። የእሱ ሰነድ ጠቃሚ ዓረፍተ ነገር ይጠብቃል።

### np.vectorize በትክክል ምን ያከናውናል?

4:56 NumPy የእሱ vectorize መጠቅለያ በዋናነት ለምቾት እንደተሰጠ ይናገራል። አተገባበሩ በመሠረቱ for loop ነው። መጠቅለያው ባቾችን ይቀበላል፣ ነገር ግን የእርስዎን ፓይዘን ተግባር ለተከታታይ ኤለመንቶች መጥራቱን ይቀጥላል። በይነገጹ አጠረ። የአፈጻጸም ወሰኑ ስራ በዝቶበታል። ተመሳሳይ እሴቶች በፓይዘን ጥሪ ተግባር በኩል ሲመለሱ ይመልከቱ። ከተዘጋጁ arrayዎች ጋር፣ ይህ ስሪት ወደ ሰማንያ ሰባት ሚሊሰከንዶች ያህል ወሰደ። ከኮምፕሪሄንሽናችን ቀርፋፋ ነበር።

5:18 ጠቃሚ የብሮድካስቲንግ መጠቅለያ ለማስወገድ እየሞከሩ የነበረውን ትክክለኛውን የኤለመንት-በ-ኤለመንት ስራ ሊጠብቅ ይችላል። ጠቃሚ የብሮድካስቲንግ መጠቅለያ ለማስወገድ እየሞከሩ የነበረውን ትክክለኛውን የኤለመንት-በ-ኤለመንት ስራ ሊጠብቅ ይችላል። ከባች በይነገጽ በስተጀርባ ያለውን አተገባበር ይፈትሹ፣ ተስማሚ ውሂብን ጠቃሚ በሆነ ቅርጹ ያቆዩ፣ እና ንጽጽር ውስጥ መቀየርን ያካትቱ። ከባች በይነገጽ በስተጀርባ ያለውን አተገባበር ይፈትሹ፣ ተስማሚ ውሂብን ጠቃሚ በሆነ ቅርጹ ያቆዩ፣ እና ንጽጽር ውስጥ መቀየርን ያካትቱ። ቤተኛ፣ የጥሪ ተግባር እና የተጠናቀሩ loops ከጠሪው ወንበር ተመሳሳይ ሊመስሉ ይችላሉ። vectorize የሚለው ስም የእርስዎ ሰዓት ቆጣሪ ያልፈረመበትን ቃል ገብቷል። ምቾት የሚያስፈልግዎ ከሆነ ያቆዩት። ለአፈጻጸም፣ የሚሰራውን loop ይፈትሹ።

### በኮድዎ ውስጥ ምን መለወጥ አለብዎት?

5:41 የእኔ ፍርድ SHIP IT ነው ለተለካ የቁጥር ሙቅ መንገድ ባችንግ። ተራ loops ቀድሞውኑ በሚሰሩበት ጊዜ ያቆዩ። ስራው የት እንደሚፈጠር እና ቀጣዩ ጠሪ ምን እንደሚፈልግ ያረጋግጡ። ሰብስክራይብ ያድርጉ፣ ደወሉን ይጫኑ፣ እና የተለየ አድርገው በታተሙት ነበር ብለው ካሰቡ በአስተያየቶች ውስጥ ይንገሩኝ። ሰብስክራይብ ያድርጉ፣ ደወሉን ይጫኑ፣ እና የተለየ አድርገው በታተሙት ነበር ብለው ካሰቡ በአስተያየቶች ውስጥ ይንገሩኝ። እና የዛሬው ልዩነት ይሄ ነው። እኔ ኒኮ ነኝ ከAxrisi። በኃላፊነት ያዋህዱ።

## ምንጮች

- [Universal functions (ufunc) basics — NumPy 2.2](https://numpy.org/doc/2.2/user/basics.ufuncs.html) — NumPy
- [The N-dimensional array — NumPy 2.2](https://numpy.org/doc/2.2/reference/arrays.ndarray.html) — NumPy
- [numpy.vectorize — convenience and performance notes](https://numpy.org/doc/2.2/reference/generated/numpy.vectorize.html) — NumPy
- [CPU/SIMD optimizations — NumPy 2.2](https://numpy.org/doc/2.2/reference/simd/index.html) — NumPy
- [dis — Disassembler for Python bytecode](https://docs.python.org/3.10/library/dis.html) — Python Software Foundation
- [CPython 3.10.12 list representation](https://github.com/python/cpython/blob/v3.10.12/Include/cpython/listobject.h) — CPython contributors
- [The limits of Python vectorization as a performance technique](https://pythonspeed.com/articles/vectorization-python-alternatives/) — Itamar Turner-Trauring / Python⇒Speed
- [Performance Tips](https://numba.readthedocs.io/en/stable/user/performance-tips.html) — Numba
- [Basics of CuPy](https://docs.cupy.dev/en/stable/user_guide/basic.html) — CuPy
