पायथन की स्टैंडर्ड लाइब्रेरी के 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