Why and When-You Should Use Python Generators

က်ြန္ေတာ္တုိ့ python basic ကုိေလ့လာျပီဆုိ generators ဆုိတာကလဲမသိမျဖစ္ပါပဲ။ဒီေန့မွာေတာ့ ဘယ္လုိအေျခအေနမ်ိဳးမွာသုံးရမယ္နဲ့ ဘာေၾကာင့္သုံးသင့္တယ္ကုိ ေျပာခ်င္ပါတယ္။

ပထမဆုံး code ကုိအရင္ၾကည့္ရေအာင္

ပထမဆုံး psutil ကုိ ဒီexampleကိုလုိက္runၾကည့္မယ္ဆုိ install လုပ္ထားဖုိ့လုိပါတယ္။$ pip install psutil ဆုိျပီးေတာ့ installလုပ္လုိက္ပါ။

အေပါ္ကcode ကေတာ့ လုိက္ရွိ memory ဘယ္ေလာက္သုံးထားတယ္ကုိတုိင္းျပဖုိ့ေရးထားတာပါ။သိထားယံုပါပဲ။ဘာေၾကာင့္ 1024နဲ့စားထားလဲဆုိ ရလာတဲ့ memory usageသည္ byte အေနနဲ့ေပးလုိ့ megabtye ကုိေျပာင္းထားတာပါ။

ဒီတစ္ခုကေတာ့ listအေနနဲ့ စမ္းဖုိ့တြက္ ေရးထားတာပါ။အရမ္းsimple ျဖစ္လြန္းလုိ့နားမလည္စရာမရွိပါဘူး။result ဆုိတဲ့ listထဲကုိ အၾကိမ္ေပါင္း 100000 ပတ္ျပီးထည့္လုိက္တယ္။ဒါေလးပါပဲ ျပီးေတာ့returnျပန္လုိက္တယ္။

ဒါကေတာ့ generator ေရးတဲ့ပုံစံပါ။yield keyword ကုိသုံးျပီး generator objectတစ္ခုတည္ေဆာက္ပါတယ္။ဒါေလးမွတ္ထားပါ။

ျပီးေတာ့ က်ြန္ေတာ္တုိ့ အခု list နဲ့ generator ဘာကြာလဲဆုိတာၾကည့္ရေအာင္

ပထမဆုံး လက္ရွိrunေနတဲ့ process id ကုိယူလုိက္ပါတယ္။က်ြန္ေတာ္တုိ့ရလာတဲ့ process id ကုိယူျပီး ဒီ process က memory ဘယ္ေလာက္သုံးေနတယ္ဆုိတာၾကည့္လုိက္ပါတယ္။t1,t2 ကေတာ့ က်ြန္ေတာ္တုိ့ run တာ ဘယ္ေလာက္ seconds ၾကာတယ္ကုိၾကည့္ဖုိ့ပါ။အဲ့ေတာ့ list_test() ကုိ runလုိက္တဲ့အခါမွာဘယ္လုိထြက္လာလဲဆုိတာၾကည့္ရေအာင္

အဲ့ေတာ့ က်ြန္ေတာ္တုိ့ list_test မွာ memory ကသိသိသာသာ တက္သြားတာေတြ့ရပါတယ္။စကန့္ကလဲ 0.14 ေလာက္ယူေနပါတယ္။ဘာလုိ့ဆုိေတာ့  မွတ္ထားရမွာက list သည္ memory ေပါ္ေနရာယူတယ္ဆုိတာပါပဲ။

အဲ့ေတာ့ result = ေနရာမွာ ေအာက္ကဟာေလးခ်ိန္းျပီး generator_test လုပ္ၾကည့္ရေအာင္။

က်ြန္ေတာ္တုိ့ runလုိက္မယ္ဆုိ ေအာက္ကတုိင္း ေတြ့ရမွာပါ။

က်ြန္ေတာ္တုိ့ generator ေတြသည္ memoryေပါ္မယူတာေတြ့ရပါတယ္။ျပီးေတာ့ ေတာ္ေတ္ာနည္းတဲ့ အခ်ိန္နဲ့ runတဲ့အျပင္ ေရးရတာလဲ yield keywordေလးနဲ့ေရးရတာမုိ့ ဖတ္ရတာလဲရွင္းသြားပါတယ္။

ဘယ္လုိအေျခေနေတြမွာသုံးသင့္လဲဆုိရင္ေတာ့ မိတ္ေဆြသည္ data record ေပါင္းေျမာက္မ်ားစြာနဲ့အလုပ္လုပ္ရျပီဆုိ generator ေတြသုံးၾကည့္ပါ။ဥပမာ computer visionက က်ြန္ေတာ့္pageမွာ ေတာ္ေတ္ာေမးပါတယ္။အဲ့ေတာ့ deep learningနဲ့computer visionေပါင္းလာျပီဆုိ image data record ေတြကုိ ယူတဲ့အခါမွာ generators နဲ့ျပန္ျပီးေတာ့ ပုိ့ေပးသင့္ပါတယ္။အားလုံးေက်းဇူးတင္ပါတယ္။

Page ကုိ review and recommend လုပ္ေပးမယ္ဆုိေက်းဇူးတင္မိမွာပါ။က်ြန္ေတာ္လဲအျမဲမအားေတာ့ မိတ္ေဆြတုိ့ဒါမ်ိုးလုပ္ေပးတာေတြက ထပ္တင္ေပးဖုိ့ အားျဖစ္ေစပါတယ္။

Facebook Page-https://www.facebook.com/pyrobocity/

Subscribe me-https://www.youtube.com/channel/UC20RXGIlK6z3Ff80A0AwH2g?sub_confirmation=1

Share:

Leave a Reply