Python को timeit मोड्युल संग प्रशोधन समय मापन।

व्यापार

पाइथन मानक पुस्तकालयको timeit मोड्युल प्रयोग गरेर, तपाइँ सजिलैसँग तपाइँको कोडमा प्रक्रियाको कार्यान्वयन समय मापन गर्न सक्नुहुन्छ। यो द्रुत जाँचको लागि उपयोगी छ।

निम्न दुई केसहरू यहाँ छलफल गरिनेछ।

  • पाइथन फाइलमा मापन गर्नुहोस्:timeit.timeit(),timeit.repeat()
  • Jupyter नोटबुक संग मापन:%timeit,%%timeit

कार्यक्रममा बितेको समय मापन गर्न time.time() प्रयोग गर्ने अर्को तरिका हो।

पाइथन फाइलहरूमा मापन: timeit.timeit(), timeit.repeat()

उदाहरणको रूपमा, हामी साधारण प्रकार्य, परीक्षण(n) को प्रशोधन समय नाप्नेछौं, जसले n क्रमिक संख्याहरूको योगफल गणना गर्छ।

import timeit

def test(n):
    return sum(range(n))

n = 10000
loop = 1000

result = timeit.timeit('test(n)', globals=globals(), number=loop)
print(result / loop)
# 0.0002666301020071842

यदि तपाईंले timeit.timeit() प्रकार्यमा स्ट्रिङको रूपमा मापन गर्न चाहनुभएको कोड पास गर्नुभयो भने, यो NUMBER पटक कार्यान्वयन हुनेछ र यसले लिएको समय फिर्ता गरिनेछ।
नम्बरको लागि पूर्वनिर्धारित मान 1,000,000 हो। ध्यान दिनुहोस् कि यदि तपाइँ समय-उपभोग प्रक्रियाको लागि पूर्वनिर्धारित मान प्रयोग गर्नुहुन्छ भने, यसले धेरै समय लिनेछ।

ग्लोबल्स() लाई आर्गुमेन्ट ग्लोबलको रूपमा पास गरेर, कोड ग्लोबल नेमस्पेसमा कार्यान्वयन गरिनेछ।
यो बिना, प्रकार्य परीक्षण र चर n लाई माथिको उदाहरणमा पहिचान गरिएको छैन।

निर्दिष्ट गरिनु पर्ने कोड स्ट्रिङको सट्टा कल गर्न मिल्ने वस्तु हुन सक्छ, त्यसैले यसलाई कुनै तर्क बिना lambda अभिव्यक्तिको रूपमा निर्दिष्ट गर्न सकिन्छ; यस अवस्थामा, तर्क विश्वव्यापी निर्दिष्ट गर्न आवश्यक छैन।

result = timeit.timeit(lambda: test(n), number=loop)
print(result / loop)
# 0.00027574066299712287

परिणामको एकाइ सेकेन्ड हो। यहाँ, आउटपुट भनेको कार्यान्वयनको संख्याले विभाजन गरिएको प्रति कार्यान्वयन समय हो।

यदि तपाईंले विभाजन गर्नुभएन भने, तपाईंले कार्यान्वयनको संख्या बढाउनुहुँदा परिणामको मान मात्र ठूलो हुनेछ।

print(timeit.timeit(lambda: test(n), number=1))
print(timeit.timeit(lambda: test(n), number=10))
print(timeit.timeit(lambda: test(n), number=100))
# 0.0003999490290880203
# 0.0038685189792886376
# 0.03517670702422038

timeit.repeat() प्रकार्य प्रयोग गरेर, timeit() बारम्बार कार्यान्वयन गर्न सकिन्छ। परिणाम सूचीको रूपमा प्राप्त हुनेछ।

repeat = 5
print(timeit.repeat(lambda: test(n), repeat=repeat, number=100))
# [0.044914519996382296, 0.039663890027441084, 0.02868645201670006, 0.022745631984435022, 0.023260265996214002]

Jupyter नोटबुक संग मापन:%timeit, %%timeit

Jupyter Notebook (IPython) मा, तपाईंले निम्न जादुई आदेशहरू प्रयोग गर्न सक्नुहुन्छ; timeit मोड्युल आयात गर्न आवश्यक छैन।

  • %timeit
  • %%timeit

% timeit

%timeit मा, कमांड लाइन आर्गुमेन्टहरू जस्तै स्पेसद्वारा छुट्याएको लक्ष्य कोड निर्दिष्ट गर्नुहोस्।

पूर्वनिर्धारित रूपमा, नम्बर र timeit.timeit() मा दोहोर्याइएको स्वचालित रूपमा निर्धारण गरिन्छ। तपाइँ तिनीहरूलाई -n र -r विकल्पहरूसँग पनि निर्दिष्ट गर्न सक्नुहुन्छ।

परिणामहरू औसत र मानक विचलनको रूपमा गणना गरिन्छ।

%timeit test(n)
# 259 µs ± 4.87 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit -r 3 -n 10000 test(n)
# 237 µs ± 6.44 µs per loop (mean ± std. dev. of 3 runs, 10000 loops each)

%% समय

जादुई आदेश %%timeit सम्पूर्ण सेलको प्रशोधन समय मापन गर्न प्रयोग गर्न सकिन्छ।

उदाहरणको रूपमा, NumPy प्रयोग गरेर उही प्रक्रिया चलाउनुहोस्। -n र -r विकल्पहरू हटाउन सकिन्छ।

हामीले सम्पूर्ण सेलको प्रशोधन समय मापन गर्ने हुनाले, निम्न उदाहरणले NumPy आयात गर्ने समय समावेश गर्दछ।

%%timeit -r 3 -n 10000
import numpy as np
a = np.arange(n)
np.sum(a)
# 19.7 µs ± 9.57 µs per loop (mean ± std. dev. of 3 runs, 10000 loops each)

%%timeit को लागि तर्कको रूपमा लक्ष्य कोड निर्दिष्ट गर्न आवश्यक छैन। तपाईले गर्नु पर्ने भनेको सेलको सुरुमा %%timeit लेख्नु हो, त्यसैले यो प्रयोग गर्न सजिलो छ।

Copied title and URL