# پائتھون کی کارکردگی: مقامی NumPy لوپس، کال بیکس اور تبادلوں کے اخراجات

Published: 2026-10-17

ایک کنٹرول شدہ CPU-صرف عددی جانچ CPython لوپس، NumPy حسابی عمل، ایک Python کال بیک ریپر اور ایک مرتب شدہ Numba لوپ کے ذریعے یکساں اقدار کی پیروی کرتی ہے۔ تیار ان پٹ NumPy کا ایک بڑا فائدہ تھا، جبکہ Python فہرستوں میں اور ان سے تبادلوں نے اس فائدے کو تقریباً برابر کر دیا۔ یہ واقعہ عمل درآمد کی حد اور ایک ایپلی کیشن کو درکار نتائج کو کیسے ماپا جائے، کی وضاحت کرتا ہے۔

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

## اس ویڈیو میں کیا شامل ہے

- CPython سورس کو بائٹ کوڈ میں مرتب کرتا ہے۔ بار بار انٹرپریٹر/آبجیکٹ کا کام اور ایک ٹائپ شدہ مقامی عددی لوپ مختلف عمل درآمد کے انتظامات ہیں۔
- عددی NumPy حسابی عمل ٹائپ شدہ بیچوں کو مرتب شدہ کارروائیوں کے حوالے کر سکتا ہے؛ حسابی لوپ اب بھی موجود ہے، اور ویوز میں غیر متصل لے آؤٹ ہو سکتے ہیں۔
- تبادلوں اور مطلوبہ آؤٹ پٹ نمائندگی کی پیمائش کریں۔ اس رن میں، Python فہرستوں کو اریوں میں تبدیل کرنا اور واپس کرنا تیار اری کے بڑے فائدے کو مٹا دیا۔
- چھوٹے ورک لوڈ عام Python کے حق میں ہو سکتے ہیں کیونکہ مقررہ اری-کال کے اخراجات اہم ہوتے ہیں۔ آٹھ اقدار کی کمپری ہینشن نے اس ماپی ہوئی موازنے کو جیتا۔
- np.vectorize ایک سہولت ریپر ہے جو یکے بعد دیگرے عناصر کے لیے Python کو کال کرتا ہے؛ ایک بیچ انٹرفیس اکیلے مقامی عددی عمل درآمد کو قائم نہیں کرتا۔
- مرتب شدہ Python-سنٹیکس لوپس بھی تیز ہو سکتے ہیں۔ جب کالر کے لیے اہم ہوں تو کولڈ کمپائلیشن/سیٹ اپ کے اخراجات شامل کریں۔
- مقامی عمل درآمد، CPU SIMD، ملٹی تھریڈنگ اور GPU بیک اینڈز الگ الگ خیالات ہیں۔ دستیاب CPU خصوصیات ایک مخصوص رن میں استعمال ہونے والی ہدایات کا سراغ نہیں لگاتیں۔

## ابواب

- 0:00 ایک ہی CPU جلد کیوں ختم ہو سکتا ہے؟
- 0:52 ایک Python لوپ کیا کام دہراتا ہے؟
- 1:38 NumPy لوپ کو کہاں منتقل کرتا ہے؟
- 2:13 کیا تیز کا مطلب GPU یا بہت سے CPU کور ہیں؟
- 2:49 حیرت انگیز رفتار کب غائب ہو جاتی ہے؟
- 3:28 بینچ مارک میں کون سی حدود شامل ہیں؟
- 4:00 کیا ایک مرتب شدہ Python لوپ بھی تیز ہو سکتا ہے؟
- 4:56 np.vectorize دراصل کیا عمل میں لاتا ہے؟
- 5:41 آپ کو اپنے کوڈ میں کیا تبدیل کرنا چاہیے؟

## ترجمہ شدہ ٹرانسکرپٹ

اصل انگریزی بیان سے ترجمہ کیا گیا۔ دستیاب آڈیو اور کیپشنز یوٹیوب کے زیر انتظام ہیں۔

### ایک ہی CPU جلد کیوں ختم ہو سکتا ہے؟

0:00 آپ کو لگتا ہے کہ Python کو تیز ہونے کے لیے ایک نئی زبان کی ضرورت ہے۔ اسی CPU نے لوپ منتقل ہونے کے بعد ہمارے بیچ کو تیزی سے چلایا۔ کام کہاں گیا؟ رفتار میں اضافہ کب ختم ہو جاتا ہے؟ کون سا شارٹ کٹ Python کو واپس لاتا ہے؟ یہ دی ڈیلی ڈف ہے، اندرونی طور پر۔ اس شارٹ کٹ پر نظر رکھیں۔ CPython معیاری Python امپلیمنٹیشن ہے۔

0:17 یہ آپ کے سورس کو بائٹ کوڈ میں مرتب کرتا ہے، پھر ان ہدایات کو ایک انٹرپریٹر میں چلاتا ہے۔ NumPy ایک عددی لائبریری ہے جس کے اریز اقدار کو ایک اعلان شدہ ڈیٹا ٹائپ کے ساتھ رکھتے ہیں۔ اس کا بلٹ ان حسابی عمل ایک پورے بیچ کو مرتب شدہ کارروائیوں کے حوالے کر سکتا ہے۔ دس لاکھ فلوٹنگ پوائنٹ اقدار لیں، ہر ایک کا مربع کریں، پھر اصل قدر شامل کریں۔ ہر ورژن کو یکساں اقدار ملتی ہیں اور مماثل جوابات پیدا کرتا ہے۔ اقدار اتنی چھوٹی ہیں کہ گول کرنے کے فرق کو دوڑ سے باہر رکھیں۔

0:40 اس مشین پر، کمپری ہینشن میں تقریباً تینتیس ملی سیکنڈ لگے۔ NumPy میں ایک سے بھی کم۔ دونوں CPU پر چلیں۔ یہ اس ورک لوڈ کے لیے مفید ثبوت ہے، اور ایک پروگرامنگ زبان کے لیے ایک خوفناک مرثیہ۔ عام لوپ سے شروع کریں۔

### ایک Python لوپ کیا کام دہراتا ہے؟

0:53 Python اگلی قدر حاصل کرتا ہے، حسابی عمل کرتا ہے، اور جواب شامل کرتا ہے۔ پھر وہ دوبارہ ایسا کرتا ہے۔ ضرب سستی ہے۔ اگلی ضرب کا انتظام کرنا، اور اس کے ارد گرد موجود Python آبجیکٹس کو ہینڈل کرنا، ہر بار کام میں اضافہ کرتا ہے۔ یہ جانچ شدہ فنکشن کا اصل ڈس ایسمبلی ہے۔ تکرار، ضرب اور جمع بائٹ کوڈ ہدایات کے طور پر ظاہر ہوتے ہیں۔ Python ورژن اور انٹرپریٹر مختلف انتخاب کرتے ہیں۔

1:14 یہ وقت اسکرین پر موجود ورژن سے تعلق رکھتے ہیں، جو Python تین اعشاریہ دس ہے۔ ایک Python فہرست آبجیکٹس کے حوالے رکھتی ہے، لہذا مختلف قسم کی چیزیں ایک فہرست کو شیئر کر سکتی ہیں۔ ہماری حسابی نوکری میں پورے وقت نمبر استعمال ہوتے ہیں۔ یہ ایک بار بار سروس کی درخواست کرتے ہوئے ایک عام انتظام کے لیے ادائیگی کرتی ہے۔ تصور کریں کہ ایک ہی کافی کو دس لاکھ بار آرڈر کرنا اور ہر کپ کے لیے ایک نیا فارم بھرنا۔ کافی مشین ٹھیک ہے۔

1:36 کاغذات نے اپنا کیریئر خود ہی بنا لیا ہے۔

### NumPy لوپ کو کہاں منتقل کرتا ہے؟

1:38 NumPy معاہدہ تبدیل کرتا ہے۔ یہ اری ایک اعلان شدہ قسم کے ساتھ مقررہ سائز کی فلوٹنگ پوائنٹ اقدار کو رکھتی ہے۔ ہماری اری متصل ہے، لہذا اس کی اقدار میموری میں ساتھ ساتھ بیٹھی ہیں۔ ویوز میں دیگر لے آؤٹ ہو سکتے ہیں۔ حسابی کارروائی جانتی ہے کہ اسے کس قسم کا ڈیٹا مل رہا ہے۔ کال بیچ کو ایک مقامی کارروائی کے حوالے کرتی ہے۔ ایک لوپ اب بھی مرتب شدہ کوڈ کے اندر اقدار کا دورہ کرتا ہے۔ یہ اس کام کے دوران قسم کے علم کو دوبارہ استعمال کر سکتا ہے۔

2:00 Python اب بھی وہ شخص ہے جو کام سونپ رہا ہے۔ اٹامار ٹرنر ٹرورنگ نے Python Speed میں اس امتیاز کی وضاحت کی ہے۔ بیچ انٹرفیس، مقامی امپلیمنٹیشن اور پروسیسر ویکٹر ہدایات الگ الگ چیزیں ہیں۔ فنکشن کا نام بہت کم ثبوت فراہم کرتا ہے۔

### کیا تیز کا مطلب GPU یا بہت سے CPU کور ہیں؟

2:13 اس نتیجے میں CPU پر NumPy کا استعمال کیا گیا۔ CuPy جیسا GPU بیک اینڈ اریز اور کارروائیوں کے لیے ایک مختلف گھر کا انتخاب کرتا ہے۔ GPU خریدنے سے یہ عام Python لوپ وہیں چلتا رہتا ہے جہاں وہ پہلے ہی چل رہا تھا۔ CPU ویکٹر ہدایات کئی اقدار کو ایک ساتھ پروسیس کر سکتی ہیں۔ NumPy میں سپورٹ شدہ کرنلز کا انتخاب کرنے کے لیے مشینری موجود ہے۔ ہمارا رن ٹائم دستیاب خصوصیات کی اطلاع دیتا ہے، لیکن اس اظہار کی ہدایات کا سراغ نہیں لگاتا۔ تمام ماپا ہوا فائدہ ویکٹر ہدایات کو دینا ثبوت کو بڑھا چڑھا کر پیش کرنا ہو گا۔ ثبوت کو بڑھا چڑھا کر پیش کرنا ہو گا۔

2:40 GPU شاپنگ کارٹ بند رہ سکتی ہے۔ کارکردگی میں اصلاح کے بارے میں کچھ گہرا اطمینان بخش ہے جو ایک خریداری کو بھی منسوخ کر دیتا ہے۔ بدقسمتی سے، بینچ مارک جاری ہے۔

### حیرت انگیز رفتار کب غائب ہو جاتی ہے؟

2:49 آٹھ اقدار کے ساتھ، کمپری ہینشن جیت گیا۔ اری مشینری کو کال کرنے پر چھوٹے کام سے زیادہ لاگت آئی۔ بڑے تیار اریز آگے نکل گئے۔ ہم نے بار بار ٹرائلز اور ایک گرم عمل کا استعمال کیا۔ نئے Python بلڈز کراس اوور کو تبدیل کر سکتے ہیں۔ پھر جو ایپلی کیشن کو درکار ہے اسے تبدیل کریں۔ ایک Python فہرست سے شروع کریں اور ایک تازہ Python فہرست کے ساتھ ختم کریں۔ NumPy کو ان پٹ کو ایک اری میں تبدیل کرنا چاہیے اور جواب کو واپس Python آبجیکٹس میں

3:11 تبدیل کرنا چاہیے۔ اگر آپ کی ایپلی کیشن کو ان اقدامات کی ضرورت ہے تو وہ بل میں شامل ہونے چاہئیں۔ دس لاکھ اقدار پر، یہ مکمل راستہ تقریباً اٹھائیس ملی سیکنڈ لگ گیا۔ کمپری ہینشن میں بھی تقریباً اٹھائیس لگے۔ ہماری ڈرامائی برتری تقریباً برابر ہو گئی۔ تیز حصہ حقیقی تھا۔ فائدہ ڈیٹا کو اس کی عددی شکل میں رہنے دینے پر منحصر تھا۔

### بینچ مارک میں کون سی حدود شامل ہیں؟

3:28 ڈیٹا کی پیروی کریں۔ اگر اگلی کارروائی ایک اری کو قبول کرتی ہے، تو اری کو برقرار رکھیں۔ اگر آپ بار بار فہرستوں اور اریز کے درمیان تبدیل کرتے ہیں، ان عبوروں کی پیمائش کریں۔ ایک مہنگے ہینڈ آف سے پہلے رکنا غلط سوال کے لیے درست اعداد دیتا ہے۔ اس اری کو ضرب دینے سے ایک عارضی نتیجہ پیدا ہوتا ہے۔ اصل اقدار کو شامل کرنے سے آؤٹ پٹ پیدا ہوتا ہے۔ مقامی عمل درآمد کو اب بھی میموری اور ڈیٹا کی منتقلی کی ضرورت ہوتی ہے۔

3:47 کچھ کارروائیاں ایک آؤٹ پٹ بفر کو قبول کرتی ہیں، جب آپ کا کوڈ اسے محفوظ طریقے سے دوبارہ استعمال کر سکے تو مختصات کو کم کرتی ہیں۔ ایک خوبصورت لائن کئی بڑے بفرز کا آرڈر دے سکتی ہے۔ Python Speed اس مسئلے کو بھی نمایاں کرتا ہے۔ اللوکیٹر آپ کے جمالیات سے غیر معمولی طور پر بے حس ہے۔

### کیا ایک مرتب شدہ Python لوپ بھی تیز ہو سکتا ہے؟

4:00 آپ لوپ سنٹیکس کو بھی برقرار رکھ سکتے ہیں اور اس کے عمل درآمد کو تبدیل کر سکتے ہیں۔ Numba معاون عددی Python فنکشنز کو مقامی کوڈ میں مرتب کر سکتا ہے۔ یہاں ہمارے ٹیسٹ سے لوپ ہے اس کے کمپائلر ڈیکوریٹر کے ساتھ۔ یہ اب بھی 'for' کہتا ہے۔ مہنگا انٹرپریٹر پاتھ تبدیل ہو گیا ہے۔ مرتب ہونے کے بعد، اس لوپ میں تیار اریز کے ساتھ نصف ملی سیکنڈ سے بھی کم وقت لگا۔ اس رن میں کمپائلیشن میں تقریباً ایک سیکنڈ لگا۔ وہ سیٹ اپ لاگت بار بار کی گئی ٹائمنگز سے خارج کر دی گئی تھی،

4:22 لہذا ایک چھوٹی سی یکطرفہ نوکری ایک مختلف موازنے کی مستحق ہے۔ Numba کی اپنی گائیڈ واضح لوپس دکھانے میں خوش ہے۔ گرم راستے کو تلاش کرنے سے پہلے زبان کی منتقلی شروع کرنا ایک پروفائلر کھولنے سے بچنے کا ایک پیچیدہ طریقہ ہے۔ پروفائلر کھولنے سے بچنے کا ایک پیچیدہ طریقہ ہے۔ پہلے یہ تلاش کریں کہ وقت کیا استعمال کرتا ہے۔ نیٹ ورک کا انتظار، آبجیکٹ کی پارسنگ اور بلک حسابی عمل مختلف اصلاحات کا مطالبہ کرتے ہیں۔ مقامی اری کارروائیاں مدد کرتی ہیں جب حساب اور ڈیٹا فٹ ہوں۔

4:43 اس نتیجے کی پیمائش کریں جس کی آپ کے کالر کو دراصل ضرورت ہے۔ اب اس شارٹ کٹ کے لیے۔ آپ کے پاس ایک Python فنکشن ہے اور آپ چاہتے ہیں کہ وہ ایک اری کو قبول کرے۔ ویکٹرائز نامی ایک ریپر غائب کارکردگی والے بٹن کی طرح لگتا ہے۔ اس کی دستاویزات میں ایک اہم جملہ منتظر ہے۔

### np.vectorize دراصل کیا عمل میں لاتا ہے؟

4:56 NumPy کا کہنا ہے کہ اس کا ویکٹرائز ریپر بنیادی طور پر سہولت کے لیے فراہم کیا جاتا ہے۔ اس کا امپلیمنٹیشن بنیادی طور پر ایک فار لوپ ہے۔ ریپر بیچوں کو قبول کرتا ہے، لیکن یکے بعد دیگرے عناصر کے لیے آپ کے Python فنکشن کو کال کرتا رہتا ہے۔ انٹرفیس مختصر ہو گیا۔ عمل درآمد کی حد مصروف رہی۔ اسی اقدار کو Python کال بیک کے ذریعے واپس آتے دیکھیں۔ تیار اریز کے ساتھ، اس ورژن میں تقریباً ستاسی ملی سیکنڈ لگے۔ یہ ہماری کمپری ہینشن سے سست تھا۔

5:18 ایک مفید براڈکاسٹنگ ریپر عین فی عنصر کے کام کو محفوظ رکھ سکتا ہے جسے آپ ہٹانے کی کوشش کر رہے تھے۔ ایک بیچ انٹرفیس کے پیچھے امپلیمنٹیشن کو چیک کریں، مطابقت پذیر ڈیٹا کو اس کی مفید شکل میں رکھیں، اور موازنے میں تبادلوں کو شامل کریں۔ مقامی، کال بیک اور مرتب شدہ لوپس کالر کی کرسی سے مماثل لگ سکتے ہیں۔ ویکٹرائز نام نے ایک وعدہ کیا جو آپ کی سٹاپ واچ نے کبھی دستخط نہیں کیا۔ اسے رکھیں جب آپ کو سہولت کی ضرورت ہو۔ کارکردگی کے لیے، چلنے والے لوپ کو چیک کریں۔

### آپ کو اپنے کوڈ میں کیا تبدیل کرنا چاہیے؟

5:41 میرا فیصلہ ایک ماپا ہوا عددی گرم راستے کو بیچنے کے لیے SHIP IT ہے۔ عام لوپس کو برقرار رکھیں جب وہ پہلے ہی اچھی طرح کام کر رہے ہوں۔ دیکھیں کہ کام کہاں ہوتا ہے اور اگلے کالر کو کیا ضرورت ہے۔ سبسکرائب کریں، گھنٹی دبائیں، اور مجھے تبصروں میں بتائیں کہ کیا آپ نے اسے مختلف طریقے سے سٹیمپ کیا ہوتا۔ اور آج کے لیے بس اتنا ہی ڈیف ہے۔ میں 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
