পাইথন কোডের একটি অংশের জন্য নির্বাহের সময় পরিমাপ করার অনেক উপায় প্রদান করে। একটি উপায় হল পাইথন ইনবিল্ট টাইম মডিউল ব্যবহার করা এবং প্রোগ্রামটি কার্যকর করার আগে এবং পরে সময় বাঁচানো?
Python timeit
যখন কিছু প্রোগ্রাম চলমান থাকে, সেই কোড এক্সিকিউটেবল করার জন্য অনেক প্রসেস ব্যাকগ্রাউন্ডেও চলে। টাইম মডিউল ব্যাকগ্রাউন্ড প্রসেস এক্সিকিউশন টাইম গণনা করে না, তবে আপনার যদি সুনির্দিষ্ট সময় পারফরম্যান্স পরিমাপের প্রয়োজন হয় তবে এটি মডিউলের জন্য যেতে হবে।
টাইমইট মডিউল কোডটি প্রায় 1 মিলিয়ন বার চালায় (ডিফল্ট মান) এবং সেই কোডের অংশটি চালাতে ন্যূনতম কত সময় লেগেছিল তা বিবেচনা করে৷
টাইমইট ব্যবহার করে পাইথন এক্সিকিউশন সময় পাওয়া
আমরা বিভিন্ন উপায়ে timeit মডিউল ব্যবহার করতে পারি। সহজতম উপায়গুলির মধ্যে একটি হল পাইথন CLI-তে সরাসরি ব্যবহার করা।
উদাহরণ
আমরা প্রথমে টাইমইট মডিউল দিয়ে পাইথন সিএলআই ব্যবহার শুরু করব। যখন CLI ব্যবহার করা হয়, তখন আমরা লক্ষ্য করব যে মডিউল নিজেই ঠিক করে যে কোডের একই অংশের জন্য সম্পাদিত পুনরাবৃত্তির সংখ্যা।
উদাহরণ 1
C:\Users\rajesh>python -m timeit "'-'.join(str(n) এর জন্য n রেঞ্জে(200))"1000 লুপ, সর্বোত্তম 3:290 usec প্রতি লুপC:\Users\rajesh>python -m timeit "'-'.join(str(n) রেঞ্জে n এর জন্য(200))"1000 লুপ, সর্বোত্তম 3:292 ইউসেক প্রতি লুপC:\Users\rajesh>python -m timeit "'-' .যোগ করুনউদাহরণ 2
পরবর্তীতে আমরা আরেকটি সাধারণ উদাহরণের সাথে timeit প্রবর্তন করি তবে প্রথমে আমাদের অবশ্যই "import timeit" স্টেটমেন্ট সহ timeit মডিউল আমদানি করতে হবে। আমরা উপরের মত কমান্ড-লাইন সিনট্যাক্স ব্যবহার না করার ক্ষেত্রে এটি প্রয়োজনীয়।
#import timeit moduleimport timeit# নির্দেশাবলী timed.print('x' * 5)print('x' + 'x' + 'x' + 'x' + 'x')# বিবৃতিতে টাইমইট কল করুন এবং প্রত্যাবর্তিত সময় মুদ্রণ করুন। # ... পুনরাবৃত্তির ঐচ্ছিক সংখ্যা উল্লেখ করুন। print(timeit.timeit("y ='x' * 3", number=10000000))print(timeit.timeit("xy ='x' + 'x' + 'x' + 'x' + 'x'", সংখ্যা =10000000))উপরে আমরা timeit.timeit পদ্ধতিতে উদ্ধৃত স্ট্রিংগুলিতে বিবৃতিগুলি পাস করি এবং তারপরে আমরা একটি সংখ্যা আর্গুমেন্ট নির্দিষ্ট করে পুনরাবৃত্তি বাড়াই৷
আউটপুট
উপরের প্রোগ্রামটি চালানোর সময় প্রথমবার, আউটপুট তৈরি হয়েছে:
xxxxxxxxxx0.90411368966266350.7712796073957123উপরের প্রোগ্রামটি চালানোর সময় দ্বিতীয়বার, আউটপুট তৈরি হয়েছে:
xxxxxxxxxx0.73170158744277510.7312688195585995উপরের প্রোগ্রামটি চালানোর সময় তৃতীয়বার, আউটপুট তৈরি হয়েছে:
xxxxxxxxxx0.72408624111728240.7255863890794246আমরা আমাদের উপরোক্ত প্রোগ্রামটি একাধিকবার (3 বার) করেছি এবং দেখুন সেখানে কমানো হচ্ছে এক্সিকিউশন টাইম। এটি ম্যানুয়ালি করার পরিবর্তে, আসুন প্রোগ্রামের মাধ্যমে পুনরাবৃত্তি করি:
#import timeit moduleimport timeit# স্টেটমেন্টে টাইমইট কল করুন এবং রিটার্ন করা সময় প্রিন্ট করুন। # ... iterations.print(timeit.repeat("y ='x' * 3", number=10000000, এর ঐচ্ছিক সংখ্যা উল্লেখ করুন। repeat =5))print()print(timeit.repeat("xy='x' + 'x' + 'x' + 'x' + 'x'", সংখ্যা =10000000, পুনরাবৃত্তি =5))আউটপুট
[0,7303736343436382, 0,7213687552991258, 0,7362311105941466, 0,7293136666273243, 0,7278277732068212] [0,7388334197158559, 0,7378481457977326, 0,9486733868277772, 0,735295442480929, 0,7398226849056382]Timeit মডিউল ব্যবহার করে একাধিক স্টেটমেন্ট চালানো হচ্ছে:
আমরা timeit মডিউল সহ একাধিক স্টেটমেন্ট ব্যবহার করতে পারি। আমরা সেমিকোলন ব্যবহার করে প্রতিটি স্টেটমেন্ট আলাদা করি। যদিও এটি কোড লেখার সর্বোত্তম উপায় নয় তবে দীর্ঘ কোডের খণ্ডগুলি নির্দিষ্ট করতে সহায়তা করে৷
#import timeit moduleimport timeit# একাধিক স্টেটমেন্টের জন্য সেমিকোলন ব্যবহার করুন।print(timeit.repeat("x =2; x *=2", number=100000000))print(timeit.repeat("x =1; x * =4", সংখ্যা=100000000))আউটপুট
[24.859605879029118, 23.58795536845994, 23.95826726353284][22.70639977603264, 21.38019599424514]254518>প্রাকপদ্ধতি ব্যবহার করে, Timeit মডিউলে সেটআপ করুন:
আমরা একটি সেটআপ আর্গুমেন্ট উল্লেখ করে টাইমইট-এ কাস্টম পদ্ধতি ব্যবহার করতে পারি। এই যুক্তিতে, আমরা একটি আমদানি বিবৃতি নির্দিষ্ট করি যা আমরা যে পদ্ধতিগুলিকে আহ্বান করি তা নির্দেশ করে৷
#Import timeit moduleimport timeitdef func1():1def func2():ফেরত যোগ করুন([-1, 0, 1, 1])# পরীক্ষার পদ্ধতি.মুদ্রণ(func1())print(func2())# পাস মেথডস.প্রিন্ট(timeit.repeat("func1()", setup="from __main__ import func1"))print(timeit.repeat("func2()", setup="from __main__ import func2")) সেটআপ আর্গুমেন্টউপরের প্রোগ্রামে আমরা func2() পদ্ধতির বিপরীতে func1() মেথডকে বেঞ্চমার্ক করি।
আউটপুট
11যেহেতু func1() কম কাজ করছে, অনেক দ্রুত কার্যকর হয়েছে।
সারাংশ
উপরে আমরা দেখেছি কিভাবে আমরা CLI এবং স্ক্রিপ্ট ব্যবহার করে টাইমইট মডিউল ব্যবহার করে পাইথন কোডের ছোট অংশের কর্মক্ষমতা পরিমাপ করতে পারি।