ازگر ملٹی پروسیسنگ قطار

Azgr Ml Y Prwsysng Qtar



ڈیٹا ڈھانچے کا سب سے اہم عنصر قطار ہے۔ 'پہلے اندر، پہلے باہر' ڈیٹا سٹرکچر کی قطار جو ازگر ملٹی پروسیسنگ کی بنیاد ہے موازنہ ہے۔ عمل کو ڈیٹا اکٹھا کرنے کی اجازت دینے کے لیے پروسیس فنکشن کو قطاریں فراہم کی جاتی ہیں۔ ڈیٹا کا پہلا آئٹم جو قطار سے خارج کیا جائے گا وہ پہلی آئٹم ہے جسے داخل کیا جائے گا۔ ہم قطار میں ڈیٹا شامل کرنے کے لیے قطار کے 'put()' طریقہ اور قطار سے ڈیٹا بازیافت کرنے کے لیے 'get()' طریقہ استعمال کرتے ہیں۔

مثال 1: Python میں ملٹی پروسیسنگ قطار بنانے کے لیے Queue() طریقہ استعمال کرنا

اس مثال میں، ہم 'queue()' طریقہ استعمال کرتے ہوئے Python میں ملٹی پروسیسنگ قطار بناتے ہیں۔ ملٹی پروسیسنگ سے مراد ایک سسٹم میں ایک یا زیادہ سی پی یوز کا استعمال ہے تاکہ بیک وقت دو یا زیادہ عمل انجام دیں۔ ملٹی پروسیسنگ، ازگر میں ایک تعمیر شدہ ماڈیول، عمل کے درمیان سوئچنگ کی سہولت فراہم کرتا ہے۔ ہمیں ملٹی پروسیسنگ کے ساتھ کام کرنے سے پہلے عمل کی خاصیت سے واقف ہونا چاہیے۔ ہم جانتے ہیں کہ قطار ڈیٹا ماڈل کا ایک اہم جزو ہے۔ معیاری ڈیٹا کی قطار، جو 'فرسٹ-ان-فرسٹ-آؤٹ' آئیڈیا پر بنائی گئی ہے، اور Python ملٹی پروسیسنگ عین ہم منصب ہیں۔ عام طور پر، قطار Python آبجیکٹ کو اسٹور کرتی ہے اور کاموں کے درمیان ڈیٹا کی منتقلی کے لیے اہم ہے۔







'اسپائیڈر' ٹول کا استعمال Python اسکرپٹ کو نافذ کرنے کے لیے کیا جاتا ہے، تو آئیے بس شروع کرتے ہیں۔ ہمیں سب سے پہلے ملٹی پروسیسنگ ماڈیول درآمد کرنا ہوگا کیونکہ ہم ازگر ملٹی پروسیسنگ اسکرپٹ چلا رہے ہیں۔ ہم نے ملٹی پروسیسنگ ماڈیول کو 'm' کے بطور درآمد کر کے ایسا کیا۔ 'm.queue()' تکنیک کا استعمال کرتے ہوئے، ہم ملٹی پروسیسنگ 'queue()' طریقہ کو استعمال کرتے ہیں۔ یہاں، ہم 'قطار' نامی ایک متغیر بناتے ہیں اور اس میں ملٹی پروسیسنگ 'قطار()' طریقہ رکھتے ہیں۔ جیسا کہ ہم جانتے ہیں کہ قطار آئٹمز کو 'پہلے میں، پہلے آؤٹ' کے آرڈر میں اسٹور کرتی ہے، جس چیز کو ہم پہلے شامل کرتے ہیں اسے پہلے ہٹا دیا جاتا ہے۔ ملٹی پروسیسنگ قطار شروع کرنے کے بعد، ہم پھر 'پرنٹ()' طریقہ کو کال کرتے ہیں، اس بیان کو پاس کرتے ہوئے 'ایک ملٹی پروسیسنگ قطار ہے' کو اسکرین پر ظاہر کرنے کی دلیل کے طور پر۔ پھر، کیونکہ ہم اس متغیر میں تعمیر شدہ قطار کو ذخیرہ کرتے ہیں، ہم 'پرنٹ()' طریقہ کے قوسین میں 'قطار' متغیر کو پاس کر کے قطار کو پرنٹ کرتے ہیں۔




مندرجہ ذیل تصویر سے پتہ چلتا ہے کہ Python ملٹی پروسیسنگ قطار اب تعمیر ہو چکی ہے۔ پرنٹ اسٹیٹمنٹ پہلے دکھایا گیا ہے۔ اس ملٹی پروسیسنگ قطار کو نامزد میموری ایڈریس میں تعمیر کرنے کے بعد، اسے دو یا دو سے زیادہ چلنے والے عملوں کے درمیان الگ الگ ڈیٹا کی منتقلی کے لیے استعمال کیا جا سکتا ہے۔







مثال 2: ازگر میں ملٹی پروسیسنگ قطار کے سائز کا تعین کرنے کے لیے 'Qsize()' طریقہ کا استعمال

ہم اس معاملے میں ملٹی پروسیسنگ قطار کے سائز کا تعین کرتے ہیں۔ ملٹی پروسیسنگ قطار کے سائز کا حساب لگانے کے لیے، ہم 'qsize()' طریقہ استعمال کرتے ہیں۔ 'qsize()' فنکشن Python ملٹی پروسیسنگ قطار کا اصل سائز واپس کرتا ہے۔ دوسرے الفاظ میں، یہ طریقہ ایک قطار میں اشیاء کی کل تعداد فراہم کرتا ہے۔

آئیے کوڈ چلانے سے پہلے پائتھون ملٹی پروسیسنگ ماڈیول کو 'm' کے طور پر درآمد کرکے شروع کریں۔ پھر، 'm.queue()' کمانڈ کا استعمال کرتے ہوئے، ہم ملٹی پروسیسنگ 'queue()' فنکشن کو استعمال کرتے ہیں اور نتیجہ کو 'Queue' متغیر میں ڈالتے ہیں۔ پھر، 'put()' طریقہ استعمال کرتے ہوئے، ہم آئٹمز کو درج ذیل لائن میں قطار میں شامل کرتے ہیں۔ یہ طریقہ ڈیٹا کو قطار میں شامل کرنے کے لیے استعمال کیا جاتا ہے۔ لہذا، ہم 'قطار' کو 'put()' طریقہ سے کہتے ہیں اور اس کے قوسین میں اس کے عنصر کے طور پر عددی نمبر فراہم کرتے ہیں۔ وہ نمبر جو ہم شامل کرتے ہیں وہ ہیں '1'، '2'، '3'، '4'، '5'، '6،' اور '7' 'put()' فنکشنز کا استعمال کرتے ہوئے۔



مزید برآں، ملٹی پروسیسنگ قطار کا سائز حاصل کرنے کے لیے 'قطار' کا استعمال کرتے ہوئے، ہم ملٹی پروسیسنگ قطار کے ساتھ 'qsize()' کہتے ہیں۔ پھر، نئے بنائے گئے 'نتیجہ' کے متغیر میں، ہم 'qsize()' طریقہ کے نتائج کو محفوظ کرتے ہیں۔ اس کے بعد، ہم 'print()' طریقہ کو کہتے ہیں اور اس کے پیرامیٹر کے طور پر 'ملٹی پروسیسنگ قطار کا سائز ہے' بیان پاس کرتے ہیں۔ اگلا، ہم 'print()' فنکشن میں 'نتیجہ' متغیر کو کہتے ہیں کیونکہ سائز اس متغیر میں محفوظ ہوتا ہے۔


آؤٹ پٹ امیج کا سائز دکھایا گیا ہے۔ جیسا کہ ہم ملٹی پروسیسنگ قطار میں سات عناصر شامل کرنے کے لیے 'put()' فنکشن اور سائز کا تعین کرنے کے لیے 'qsize()' فنکشن استعمال کرتے ہیں، ملٹی پروسیسنگ قطار کا سائز '7' ظاہر ہوتا ہے۔ ان پٹ اسٹیٹمنٹ 'ملٹی پروسیسنگ قطار کا سائز' سائز سے پہلے دکھایا گیا ہے۔

مثال 3: Python ملٹی پروسیسنگ قطار میں 'Put()' اور 'Get()' طریقہ استعمال کرنا

Python ملٹی پروسیسنگ قطار سے 'put()' اور 'get()' قطار کے طریقے اس مثال میں استعمال کیے گئے ہیں۔ ہم اس مثال میں صارف کی طرف سے طے شدہ دو افعال تیار کرتے ہیں۔ اس مثال میں، ہم ایک ایسا عمل بنانے کے لیے ایک فنکشن کی وضاحت کرتے ہیں جو '5' بے ترتیب عدد تیار کرتا ہے۔ ہم انہیں قطار میں شامل کرنے کے لیے 'put()' طریقہ بھی استعمال کرتے ہیں۔ 'put()' طریقہ آئٹمز کو قطار میں رکھنے کے لیے استعمال کیا جاتا ہے۔ پھر، قطار سے نمبروں کو بازیافت کرنے اور ان کی قدروں کو واپس کرنے کے لیے، ہم ایک اور فنکشن لکھتے ہیں اور طریقہ کار کے دوران اسے کال کرتے ہیں۔ ہم قطار سے نمبرز کو بازیافت کرنے کے لیے 'get()' فنکشن کا استعمال کرتے ہیں کیونکہ یہ طریقہ اس قطار سے ڈیٹا کو بازیافت کرنے کے لیے استعمال ہوتا ہے جسے ہم 'put()' طریقہ استعمال کرتے ہوئے داخل کرتے ہیں۔

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


ہم ایک فنکشن کی وضاحت کرتے ہیں۔ پھر، چونکہ یہ فنکشن صارف کے ذریعے طے شدہ ہے، اس لیے ہم اسے 'function1' کا نام دیتے ہیں اور اس کی دلیل کے طور پر 'queue' کی اصطلاح پاس کرتے ہیں۔ اس کے بعد، ہم 'پرنٹ()' فنکشن کو استعمال کرتے ہیں، اسے 'بلڈر: رننگ'، 'فلش'، اور آبجیکٹ 'ٹرو' اسٹیٹمنٹس پاس کرتے ہیں۔ Python کے پرنٹ فنکشن میں فلش نامی ایک منفرد آپشن ہے جو صارف کو یہ انتخاب کرنے دیتا ہے کہ اس آؤٹ پٹ کو بفر کرنا ہے یا نہیں۔ اگلا مرحلہ کام کو تیار کرنا ہے۔ ایسا کرنے کے لیے، ہم 'for' استعمال کرتے ہیں اور متغیر 'm' بناتے ہیں اور رینج کو '5' پر سیٹ کرتے ہیں۔ پھر، اگلی لائن میں، 'random()' کا استعمال کریں اور نتیجہ کو اس متغیر میں اسٹور کریں جو ہم نے بنایا ہے جو کہ 'value' ہے۔ اس سے ظاہر ہوتا ہے کہ فنکشن اب اپنی پانچ تکرار کو ختم کرتا ہے، ہر تکرار کے ساتھ 0 سے 5 تک ایک بے ترتیب عدد پیدا ہوتا ہے۔

پھر، مندرجہ ذیل مرحلے میں، ہم 'sleep()' فنکشن کو کال کرتے ہیں اور 'ویلیو' آرگیومینٹ پاس کرتے ہیں تاکہ اس حصے کو سیکنڈوں کی ایک خاص تعداد کے لیے موخر کر سکیں۔ پھر، ہم بنیادی طور پر قطار میں قدر شامل کرنے کے لیے 'put()' طریقہ کے ساتھ 'قطار' کہتے ہیں۔ اس کے بعد صارف کو مطلع کیا جاتا ہے کہ 'queue.put()' طریقہ کو ایک بار پھر استعمال کرکے اور 'None' ویلیو کو پاس کرکے مزید کوئی کام نہیں کرنا ہے۔ پھر، ہم 'print()' طریقہ چلاتے ہیں، 'builder: ready' اسٹیٹمنٹ کو 'flush' کے ساتھ پاس کرتے ہیں اور اسے 'True' پر سیٹ کرتے ہیں۔


اب ہم ایک دوسرے فنکشن کی وضاحت کرتے ہیں، 'function2'، اور کلیدی لفظ 'queue' کو اس کی دلیل کے طور پر تفویض کرتے ہیں۔ پھر، ہم رپورٹ کو پاس کرتے ہوئے 'پرنٹ()' فنکشن کہتے ہیں 'صارف: چل رہا ہے' اور 'فلش'  جو 'True' پر سیٹ ہے۔ ہم ڈیٹا کو قطار سے باہر نکالنے اور اسے نئے بنائے گئے 'آئٹم' متغیر میں ڈالنے کے لیے while true حالت کا استعمال کرتے ہوئے 'function2' کا آپریشن شروع کرتے ہیں۔ پھر، ہم 'اگر' حالت، 'آئٹم کوئی نہیں ہے' کا استعمال کرتے ہیں، اگر شرط درست ہے تو لوپ میں خلل ڈالنے کے لیے۔ اگر کوئی شے دستیاب نہیں ہے، تو یہ رک جاتی ہے اور صارف سے ایک کے لیے پوچھتی ہے۔ ٹاسک اس صورت میں لوپ اور اینڈ کو روکتا ہے اگر ویلیو سے حاصل کردہ آئٹم null ہو جائے۔ اس کے بعد، مندرجہ ذیل مرحلے میں، ہم 'print()' فنکشن کو کال کرتے ہیں اور اسے 'User: ready' رپورٹ اور 'flush=True' پیرامیٹرز فراہم کرتے ہیں۔


پھر، ہم 'if-name = main_' کا استعمال کرتے ہوئے مرکزی عمل میں داخل ہوتے ہیں۔ ہم 'قطار()' طریقہ کو کال کرکے اور اسے 'قطار' متغیر میں اسٹور کرکے ایک قطار بناتے ہیں۔ اگلا، ہم صارف کے فنکشن کو 'function2' کہہ کر ایک عمل بناتے ہیں۔ اس کے لیے ہم 'عمل' کلاس کہتے ہیں۔ اس کے اندر، ہم عمل میں فنکشن کو کال کرنے کے لیے 'target=function2' پاس کرتے ہیں، argument 'queue' کو پاس کرتے ہیں، اور اسے 'User_process' متغیر میں اسٹور کرتے ہیں۔ عمل پھر 'صارف_ عمل' متغیر کے ساتھ 'start()' طریقہ کو کال کرکے شروع ہوتا ہے۔ اس کے بعد ہم اسی طریقہ کار کو دہراتے ہیں تاکہ عمل میں 'function1' کو کال کریں اور اسے 'builder process' متغیر میں ڈالیں۔ اس کے بعد، ہم عمل کو عمل درآمد کا انتظار کرنے کے لیے 'join()' طریقہ کے ساتھ کال کرتے ہیں۔


اب جبکہ یہ پیش کیا گیا ہے، آپ آؤٹ پٹ میں دونوں فنکشنز کے بیانات دیکھ سکتے ہیں۔ یہ وہ آئٹمز دکھاتا ہے جو ہم نے 'put()' اور 'get()' کا استعمال کرتے ہوئے بالترتیب 'get()' طریقوں کو استعمال کرکے شامل کی ہیں۔

نتیجہ

ہم نے اس مضمون میں Python ملٹی پروسیسنگ قطار کے بارے میں سیکھا۔ ہم نے دی گئی عکاسیوں کا استعمال کیا۔ سب سے پہلے، ہم نے queue() فنکشن کا استعمال کرتے ہوئے Python ملٹی پروسیسنگ میں قطار بنانے کا طریقہ بتایا۔ پھر، ہم نے قطار کا تعین کرنے کے لیے 'qsize()' طریقہ استعمال کیا۔ ہم نے قطار کے put() اور get() کے طریقے بھی استعمال کیے ہیں۔ ٹائم ماڈیول کی سلیپ کلاس اور رینڈم ماڈیول کی بے ترتیب کلاس دونوں کو آخری مثال میں زیر بحث لایا گیا تھا۔