কম্পিউটার

ছোট পাইথন কোড স্নিপেটগুলির সম্পাদনের সময় পরিমাপ করুন (timeit)


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

কার্যকর করার সময় পরিমাপ করার সবচেয়ে সহজ উপায় হল নিম্নলিখিত সুবিধা ফাংশন ব্যবহার করে

timeit()

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

  • stmt − বৈধ পাইথন বিবৃতি ধারণকারী একটি স্ট্রিং যার কার্য সম্পাদনের সময় পরিমাপ করা হয়৷

  • সেটআপ − পাইথন স্টেটমেন্ট সম্বলিত একটি স্ট্রিং যা একবার কার্যকর করা হবে, প্রাথমিকভাবে নির্দিষ্ট বস্তু বা ভেরিয়েবল শুরু করার জন্য।

উভয় স্ট্রিং-এ সেমি কোলন(;) বা নিউলাইন দ্বারা পৃথক করা একাধিক স্টেটমেন্ট থাকতে পারে এবং উভয়ই ডিফল্ট কিওয়ার্ড পাস করতে পারে। আরেকটি ঐচ্ছিক প্যারামিটার নম্বর দেওয়া যেতে পারে যা 'stmt'-এর মৃত্যুদন্ডের সংখ্যা নির্দেশ করে

নিম্নলিখিত উদাহরণে 0-100 পরিসরে সংখ্যার ক্রমবর্ধমান সংযোজন হাজার গুণ সম্পাদন করতে প্রয়োজনীয় সময় পরিমাপ করা হয়।

import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
print (timeit.timeit(setup = setupcode, stmt = function, number = 1000))

এখানে একটি স্ট্রিং-এ একটি লুপ রয়েছে যার মধ্যে 0-100 পরিসরের মধ্যে সংখ্যা যোগ করা হয়েছে। এই স্ট্রিং হল stmt প্যারামিটার। উপরন্তু, একটি সেটআপকোড স্ট্রিং দ্বারা একটি ভেরিয়েবলের আরম্ভ করা হয়। timeit() ফাংশন সেকেন্ডে প্রয়োজনীয় সময় গণনা করে।

আউটপুট

0.03055878530880241

টাইমার ক্লাস

প্রথমে একটি টাইমার অবজেক্ট তৈরি করে এবং তারপর এটিতে timeit() পদ্ধতি চালানোর মাধ্যমে একই ফলাফল পাওয়া যেতে পারে।

পুনরাবৃত্তি()

টাইমার ক্লাসে বারবার timeit() কল করার জন্য একটি repeat() পদ্ধতি রয়েছে। এটি সমস্ত কলের একটি তালিকা প্রদান করে৷

উপরের কোডের একটি অবজেক্ট ওরিয়েন্টেড সংস্করণ নিম্নরূপ -

import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
t = timeit.Timer(setup = setupcode, stmt = function)
print (t.timeit(number = 1000))
print ('calling repeat() :',t.repeat(3,1000))

আউটপুট

0.019971274194651528
calling repeat() : [0.023369810546474253, 0.020518432391765262, 0.02075439436427058]

কমান্ড লাইন ইন্টারফেস

আগেই উল্লেখ করা হয়েছে, timeit মডিউলের একটি কমান্ড লাইন ইন্টারফেস রয়েছে। পাইথন স্ক্রিপ্ট কার্যকর করার জন্য কমান্ড লাইনে –m বিকল্প ব্যবহার করে মডিউলটি নিজেই আমদানি করা হয়। নিম্নলিখিত কমান্ড লাইন বিকল্পগুলি বিভিন্ন প্যারামিটার লাইন সেটআপ এবং এক্সিকিউটেবল কোড, পুনরাবৃত্তি ফ্রিকোয়েন্সি ইত্যাদি সংজ্ঞায়িত করে৷

-n N, --number =N কতবার 'বিবৃতি' চালাতে হবে
-r N, --repeat =N টাইমার কতবার পুনরাবৃত্তি করতে হবে (ডিফল্ট 3)
-s S, --setup =S প্রাথমিকভাবে একবার সম্পাদিত বিবৃতি (ডিফল্ট পাস)
-v, --verbose কাঁচা সময়ের ফলাফল প্রিন্ট করুন; আরো সংখ্যা নির্ভুলতার জন্য পুনরাবৃত্তি করুন
-h, --help একটি সংক্ষিপ্ত ব্যবহারের বার্তা প্রিন্ট করুন এবং প্রস্থান করুন

পূর্বে ব্যবহৃত উদাহরণ কোডের সমতুল্য কমান্ড লাইন নিচে দেওয়া হল −

C:\Users\acer>python -m timeit -s "s = 0" "for x in range(100): s = s + x"
10000 loops, best of 3: 22.4 usec per loop

  1. পাইথন ম্যাথ অপারেটর:একটি গাইড

  2. পাইথন দোভাষী:একটি ধাপে ধাপে গাইড

  3. পাইথনে ভেক্টরাইজেশন

  4. পাইথনে উচ্চ-নির্ভুলতার সাথে সময় কীভাবে পরিমাপ করবেন?