Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

छोटे पायथन कोड स्निपेट्स के एक्ज़ीक्यूशन टाइम को मापना (timeit मॉड्यूल)

पायथन की स्टैंडर्ड लाइब्रेरी के timeit मॉड्यूल में Timer क्लास और अन्य सुविधाजनक फ़ंक्शन्स छोटे पायथन कोड बिट्स के एक्ज़ीक्यूशन में लगने वाले समय को मापने का एक तंत्र प्रदान करने के लिए डिज़ाइन किए गए हैं। मॉड्यूल का एक कमांड लाइन इंटरफ़ेस है और फ़ंक्शन्स को प्रोग्राम के भीतर से भी कॉल किया जा सकता है।

timeit() फ़ंक्शन

एक्ज़ीक्यूशन समय मापने का सबसे आसान तरीका निम्न सुविधाजनक फ़ंक्शन का उपयोग करना है:

timeit()

यह फ़ंक्शन Timer क्लास का ऑब्जेक्ट लौटाता है। इसे मुख्य रूप से दो पैरामीटर्स की आवश्यकता होती है:

  • stmt - एक स्ट्रिंग जिसमें वैध पायथन स्टेटमेंट होता है जिसका एक्ज़ीक्यूशन समय मापा जाना है।

  • setup - एक स्ट्रिंग जिसमें पायथन स्टेटमेंट होता है जिसे एक बार एक्ज़ीक्यूट किया जाएगा, मुख्य रूप से कुछ ऑब्जेक्ट्स या वेरिएबल्स को इनिशियलाइज़ करने के लिए।

दोनों स्ट्रिंग्स में कई स्टेटमेंट्स हो सकते हैं जो सेमीकॉलन (;) या न्यूलाइन से अलग होते हैं, और दोनों डिफ़ॉल्ट रूप से pass कीवर्ड होते हैं। एक अन्य वैकल्पिक पैरामीटर number दिया जा सकता है जो '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 पैरामीटर है। जोड़ के लिए, वेरिएबल का इनिशियलाइज़ेशन setupcode स्ट्रिंग द्वारा किया जाता है। timeit() फ़ंक्शन सेकंड में आवश्यक समय की गणना करता है।

आउटपुट

0.03055878530880241

Timer क्लास

पहले Timer ऑब्जेक्ट बनाकर और फिर उस पर timeit() मेथड एक्ज़ीक्यूट करके वही परिणाम प्राप्त किया जा सकता है।

repeat()

Timer क्लास में repeat() मेथड भी होता है जो timeit() को बार-बार कॉल करता है। यह सभी कॉल्स की सूची लौटाता है।

उपरोक्त कोड का ऑब्जेक्ट-ओरिएंटेड संस्करण इस प्रकार है:

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 'statement' को कितनी बार एक्ज़ीक्यूट करना है
-r N, --repeat = N टाइमर को कितनी बार दोहराना है (डिफ़ॉल्ट 3)
-s S, --setup = S स्टेटमेंट जिसे एक बार शुरू में एक्ज़ीक्यूट किया जाए (डिफ़ॉल्ट pass)
-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. - पायथन मैथ ऑपरेटर्स: एक संपूर्ण गाइड

    आप चाहे कुछ भी बना रहे हों, यह संभावना है कि संख्याएं आपके कोड में कहीं न कहीं आएंगी। आप रेस्तरां ऐप के लिए मेनू पर आइटम्स की कीमतों को स्टोर करने के लिए संख्याओं का उपयोग कर सकते हैं या करेंसी एक्सचेंज ऐप में विभिन्न मुद्राओं के बीच रूपांतरण करने के लिए। पायथन के शुरुआती आमतौर पर पूछते हैं कि उनके

  1. पायथन इंटरप्रेटर्स: एक चरण-दर-चरण गाइड पायथन इंटरप्रेटर्स: एक चरण-दर-चरण गाइड

    पायथन प्रोग्राम कैसे एक्जीक्यूट होता है? पायथन, जावा की तरह, पूरी तरह से इंटरप्रेटेड भाषा के रूप में वर्गीकृत नहीं किया जा सकता और न ही कंपाइल्ड भाषा के रूप में। यह दोनों का थोड़ा सा है। कंपाइल्ड होने का मतलब इस उदाहरण में है किसी प्लेटफॉर्म पर निर्भर न करने वाली निचले स्तर की भाषा में अनुवादित होन

  1. Python में वेक्टोराइज़ेशन Python में वेक्टोराइज़ेशन

    इस लेख में, हम वेक्टोराइज़ेशन और Python 3.x या उससे पहले के संस्करणों में कार्यान्वयन में शामिल विभिन्न तकनीकों के बारे में सीखेंगे।वेक्टोराइज़ेशन क्या है?वेक्टोराइज़ेशन लूप के उपयोग के बिना सरणियों को लागू करने की एक तकनीक है। एक फ़ंक्शन का उपयोग करने से कोड के रनिंग टाइम और एक्ज़ीक्यूशन टाइम को कु