2012-06-04 14 views
11

फ़ंक्शन परिणाम और आउटपुट के समय दोनों को आउटपुट करने के लिए टाइमिट फ़ंक्शन का उपयोग करने का कोई तरीका है?पायथन टाइमिट और प्रोग्राम आउटपुट

अभी मैं

timer = Timer('func()', 'from __main__ import func') 
print timer.timeit(1) 

उपयोग कर रहा हूँ लेकिन यह सिर्फ समय आउटपुट और नहीं कार्यक्रम उत्पादन है, जो अपने अंत में कुछ देता है। मैं इसे

FuncOutputGoesHere 13.2897528935 

उसी लाइन पर आउटपुट करना चाहता हूं।

आदर्श रूप में, मैं इसे N बार चल रहा है और उसके बाद प्रोग्राम परिणाम और इसकी औसत समय

+0

मुझे समय-समय पर सिफारिश करने वाले लोगों और समय की सिफारिश करने वाले लोगों के बीच बहुत विचलन दिखाई देता है। समय()। कौनसा अच्छा है? – MyNameIsKhan

+0

'timeit'' time.time() 'का उपयोग करता है, जब तक कि आप विंडोज़ पर न हों, जहां यह 'time.clock' (अधिक सटीक) का उपयोग करेगा। –

+0

तो टाइमिट मुझे सबसे सटीकता प्रदान करेगा? – MyNameIsKhan

उत्तर

13

दो विकल्प (एक उत्पादन समग्र की कुल) outputting द्वारा कार्यक्रम के एक औसत लेने में सक्षम होना चाहते हैं:

  1. अपने समय कोड में 'प्रिंट' शामिल करें। बदसूरत, लेकिन हे।

    timer = Timer('print func()', 'from __main__ import func') 
    print timer.timeit(1) 
    
  2. तुम सब एक बार अपने समारोह चलाया जाता है, तो timeit मॉड्यूल पूरी तरह और समय के साथ बांटना कोड सीधे ही विधि का उपयोग:

    import sys 
    import time 
    
    if sys.platform == "win32": 
        # On Windows, the best timer is time.clock() 
        default_timer = time.clock 
    else: 
        # On most other platforms the best timer is time.time() 
        default_timer = time.time 
    
    t0 = default_timer() 
    output = func() 
    t1 = default_timer() 
    print output, t1 - t0 
    

आप चलाना चाहते हैं कोड कई बार, और आउटपुट का उत्पादन, कोड टाइमिट फ़ंक्शन के बाहर कोड क्यों नहीं चलाते? आप इसे एक बार फिर पहले से ही वैसे भी की तुलना में अधिक बुला रहे हैं:

timer = Timer('func()', 'from __main__ import func') 
    print timer.timeit(100), 
    print func() 
+0

धन्यवाद, यह बहुत उपयोगी है –

0

timeit मॉड्यूल बयान से पारित कर दिया निष्पादित करता है। आप केवल फ़ंक्शन के परिणाम प्रिंट कर सकते हैं:

timer = Timer('print func()', 'from __main__ import func') 
print timer.timeit(1) 
+1

यह इसे दस लाख बार प्रिंट करेगा, या फिर अक्सर कथन निष्पादित किया जाता है, और समय में I/O ओवरहेड भी गिनता है। – delnan

+0

@ डेलनान: वह टाइमर चलाता है। टाइमिट (1) ... जो भी आप करेंगे उसे बनाएं। :-P –

+0

@MartijnPieters मुझे नहीं पता कि इसे कई बार आउटपुट किए बिना इसे कई बार कैसे चलाया जाए; मुझे लगता है कि मुझे परिणाम को रनटाइम्स की संख्या से विभाजित करने की आवश्यकता होगी क्योंकि ऐसा लगता है कि यह कुल है। एक बार औसत और आउटपुट प्राप्त करने के लिए इसे कुछ बार चलाने के लिए आदर्श होगा। – MyNameIsKhan

संबंधित मुद्दे