কম্পিউটার

পাইথন কোডের জন্য অপ্টিমাইজেশন টিপস?


যদিও আমরা সকলেই জানি পাইথন অন্যান্য মেনে চলা ভাষার মতো দ্রুত বা দক্ষ নয়। যাইহোক, অনেক বড় কোম্পানি রয়েছে যা আমাদের দেখায় যে পাইথন কোড অনেক বড় কাজের চাপ সামলাতে পারে যা দেখায় যে এটি ধীরগতির নয়। এই বিভাগে, আমরা কিছু টিপস দেখতে যাচ্ছি যেগুলিকে মনে রাখা উচিত যাতে একটি সঠিক পাইথন প্রোগ্রাম আরও দ্রুত এবং আরও কার্যকরী হয়৷

টিপ 1:বিল্ট-ইন ফাংশনগুলির জন্য যান

যদিও আমরা পাইথনে দক্ষ কোড লিখতে পারি, তবে বিল্ট-ইন ফাংশনগুলিকে হারানো খুব কঠিন (যা সি তে লেখা আছে)। নীচের ছবিটি পাইথন বিল্ট-ইন ফাংশনগুলির তালিকা দেখায়

পাইথন কোডের জন্য অপ্টিমাইজেশন টিপস?

টিপ 2:ভেরিয়েবল অদলবদল করতে পাইথন একাধিক অ্যাসাইনমেন্ট ব্যবহার করুন

>>> # ব্যবহার করার পরিবর্তে>>> x, y =y, x>>> # এটি ব্যবহার করুন - যা অনেক দ্রুত>>> temp =x>>> x =y>>> y =temp 

টিপ 3:গ্লোবাল ভেরিয়েবল এড়িয়ে চলুন এবং সম্ভব হলে স্থানীয় ভেরিয়েবল ব্যবহার করুন

বৈশ্বিক ভেরিয়েবল পুনরুদ্ধার করার চেয়ে স্থানীয় ভেরিয়েবল পুনরুদ্ধার করার সময় পাইথন দ্রুত। অর্থাৎ, সম্ভব হলে গ্লোবাল ভেরিয়েবল এড়িয়ে চলুন।

টিপ 4:যেখানেই সম্ভব "ইন" ব্যবহার করুন

সাধারণভাবে সদস্যতা পরীক্ষা করতে, "ইন" কীওয়ার্ড ব্যবহার করুন। এটি পরিষ্কার এবং দ্রুত।

 ক্রমানুসারে কী এর জন্য:প্রিন্ট করুন ("হ্যালো", কী)

টিপ 5:অসীম লুপের জন্য "যখন 1" ব্যবহার করুন

এমন সময় আছে যখন আমাদের প্রোগ্রামে অসীম লুপ চালাতে হয় (উদাহরণস্বরূপ, একটি শোনার সকেট)। যদিও "যদিও সত্য" একই অপারেশন করবে, "যখন 1" একটি একক জাম্প অপারেশন।

>>> যখন 1:# কিছু করুন, যখন 1 এর সাথে দ্রুত>>> যখন সত্য:# কিছু করুন, একই অপারেশন করুন তবে আগেরটির চেয়ে ধীরগতি করুন

টিপ 6:তালিকা বোধগম্যতা ব্যবহার করুন

আমরা python 2.0 থেকে অনেকগুলি “for” এবং “while” ব্লক প্রতিস্থাপন করতে লিস্ট কম্প্রিহেনশন ব্যবহার করতে পারি। লুপ করার সময় একটি অনুমানযোগ্য প্যাটার্ন খুঁজে পেতে পাইথন দোভাষীর জন্য এটি অপ্টিমাইজ করা হয়েছে বলে তালিকা বোঝা অনেক দ্রুত। এটি আরও পঠনযোগ্য এবং বেশিরভাগ ক্ষেত্রে এটি গণনার জন্য একটি অতিরিক্ত পরিবর্তনশীল সংরক্ষণ করে।

উদাহরণস্বরূপ এক লাইন দিয়ে 1 থেকে 25 এর মধ্যে জোড় সংখ্যা বের করা:

>>> #লিস্ট কম্প্রিহেনশন ব্যবহার করা - ভালো উপায়>>> প্রিন্ট ([i এর জন্য i রেঞ্জে (25) যদি i%2 ==0])[0, 2, 4, 6, 8, 10, 12 , 14, 16, 18, 20, 22, 24]>>> # আরেকটি উপায় - এত দক্ষ নয় উপায় =0evens =[]যখন i<25:if i%2 ==0:evens.append(i) i + =1মুদ্রণ(জোর)[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24] 

টিপ 7:চাহিদা অনুযায়ী মূল্য পেতে পাইথন জেনারেটর ব্যবহার করুন

পাইথন জেনারেটর ব্যবহার করে মেমরি বাঁচান এবং কর্মক্ষমতা উন্নত করুন। আপনি যদি ভিডিও স্ট্রিম করছেন, আপনি বাইটগুলির একটি অংশ পাঠাতে পারেন তবে পুরো স্ট্রিমটি নয়৷

>>> chunkBytes =(1000 * i এর জন্য i রেঞ্জে (1000))>>> next(chunkBytes)0>>> next(chunkBytes)1000>>>> next(chunkBytes)2000>>> পরবর্তী(chunkBytes) 3000>>>

টিপ 8:itertools মডিউল ব্যবহার

itertools মডিউলটি পুনরাবৃত্তি এবং সংমিশ্রণের জন্য খুব দরকারী এবং দক্ষ৷

পাইথন কোডের কয়েকটি লাইনে [1, 2, 3, 4, 5] তালিকার জন্য সমস্ত স্থানান্তর তৈরি করতে

>>> itertools আমদানি করুন>>> iter1 =itertools. permutations([1, 2, 3,4])>>> তালিকা(iter1)[(1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2), (2, 1, 3, 4), (2, 1, 4, 3), (2, 3, 1, 4), (2, 3, 4, 1), (2, 4, 1, 3), (2, 4, 3, 1), (3, 1, 2, 4), (3, 1, 4, 2), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 1, 2), (3, 4, 2, 1), (4, 1, 2, 3), (4, 1, 3, 2), (4, 2, 1, 3), (4, 2, 3, 1), (4, 3, 1, 2), (4, 3, 2, 1)]

টিপ 9:একটি তালিকাকে সাজানো ক্রমে রাখার জন্য দ্বিখণ্ডিত মডিউল ব্যবহার করুন

এটি একটি বিনামূল্যের বাইনারি অনুসন্ধান বাস্তবায়ন এবং একটি সাজানো অনুক্রমের জন্য একটি দ্রুত সন্নিবেশ টুল৷

>>> bisect import>>> bisect.insort(তালিকা, উপাদান)

আমরা আমাদের তালিকায় উপাদানটি সন্নিবেশিত করেছি এবং এখন কন্টেইনারটি সাজানোর জন্য আমাদের আবার sort() কল করার দরকার নেই, যা দীর্ঘ ক্রমানুসারে খুব ব্যয়বহুল হতে পারে।

টিপ 10:অভিধান ব্যবহার করুন এবং সদস্যতা পরীক্ষা করতে সেট করুন

যেহেতু অভিধান এবং সেটগুলি হ্যাশ টেবিল ব্যবহার করে প্রয়োগ করা হয়, একটি অভিধানে একটি উপাদান বিদ্যমান কিনা বা একটি সেট পাইথনে খুব দ্রুত আছে কিনা তা পরীক্ষা করা হয়। কখনও কখনও লুকআপ O(1) এর মতো দ্রুত হয়।

>>> lst =['a', 'ab', 'abc'] #ধীরে - lstTrue এ>>> 'abc' তালিকা সহ সদস্যপদ পরীক্ষা করা হচ্ছে>>> mySet =সেট(['a', 'ab ', 'abc'])# দ্রুত - mySetTrue-এ সেট বা অভিধান দিয়ে সদস্যপদ পরীক্ষা করা হচ্ছে>>> 'abc'

টিপ 11:পাইথন ডেকোরেটরের সাথে ক্যাশে ফলাফল

পাইথন ডেকোরেটর প্রতীক হল “@”। আমরা পাইথন ডেকোরেটর ব্যবহার করতে পারি শুধুমাত্র ট্রেসিং, লকিং বা লগিং এর জন্যই নয়, আমরা পাইথন ফাংশন সাজানোর জন্য এটি ব্যবহার করতে পারি যাতে এটি পরবর্তীতে প্রয়োজনীয় ফলাফলগুলি মনে রাখে (স্মরণ)।

>>> functools import wraps থেকে>>> def memo(f):cache ={} @wraps(f) def wrap(*arg):arg ক্যাশে না থাকলে:cache['arg'] =f( *arg) রিটার্ন ক্যাশে['arg'] রিটার্ন র‍্যাপ

এবং আমরা এই ডেকোরেটরটিকে ফিবোনাচি ফাংশনে ব্যবহার করতে পারি

>>> @memodef fib(i):যদি i<2:1 রিটার্ন ফিব(i-1) + fib(i-2)

মৌলিক ধারণা হল আপনার গণনা করা প্রতিটি ফিবোনাচি শব্দ মনে রাখার জন্য আপনার ফাংশনকে উন্নত (সাজানো) করা, যদি সেগুলি ক্যাশে থাকে, তাহলে এটিকে আবার গণনা করার দরকার নেই৷


  1. মার্জ সাজানোর জন্য পাইথন প্রোগ্রাম

  2. হিপ সাজানোর জন্য পাইথন প্রোগ্রাম

  3. ওয়ার্ডপ্রেসের জন্য ইমেজ অপ্টিমাইজেশান টিপস

  4. 5 সেরা অ্যাপ স্টোর অপ্টিমাইজেশান (ASO) বিপণনকারীদের জন্য টিপস