इसे पूरा करने के लिए एक अजगर स्क्रिप्ट के लिए समय निकालें


143

मेरे पास एक पायथन लिपि में निम्नलिखित कोड है:

def fun(): 
  #Code here

fun()

मैं इस स्क्रिप्ट को निष्पादित करना चाहता हूं और यह भी पता लगाना चाहता हूं कि मिनटों में निष्पादित करने में कितना समय लगा। मुझे कैसे पता चलेगा कि इस स्क्रिप्ट को निष्पादित करने में कितना समय लगा? एक उदाहरण वास्तव में सराहना की जाएगी।


5
पहली बार "पायथन फंक्शन टाइमिंग" की खोज पर हिट: daniweb.com/software-development/python/code/216610
पिस्कवर ने

आप cProfile का भी उपयोग कर सकते हैं । आपको प्रत्येक फ़ंक्शन को अलग से समय देने का विकल्प देता है
एडम रोसेन्टल

जवाबों:


263
from datetime import datetime
startTime = datetime.now()

#do something

#Python 2: 
print datetime.now() - startTime 

#Python 3: 
print(datetime.now() - startTime)

5
पाइथन के लिए नया, 3.6.1 में काम कर रहा है। FYI डेटाइम अब एक विशेषता है।
WizzleWuzzle

5
@WizzleWuzzle datetime.now()काम करता है अगर आप ऐसा करेंगे from datetime import datetimeही नहीं, import datetime(सिर्फ अजगर 3.6.4 पर इस बात की पुष्टि)।
पॉल

130

क्या आप लिनक्स या UNIX पर कमांड लाइन से स्क्रिप्ट निष्पादित करते हैं? उस मामले में, आप बस इस्तेमाल कर सकते हैं

time ./script.py

2
time -p ./script.py -pपाइपलाइन के लिए झंडा
जोय

1
और पाइपलाइन से हमें क्या मदद मिलती है?
ak3191

विंडोज़ के लिए समय अजगर myScript.py बाहर रखा सेकंड में निष्पादन का समय होगा: 38.509970903396606 वास्तविक 0m38.792s उपयोगकर्ता 0m0.015s sys 0m0.046s
आर्यश्री प्रितिकृष्ण

64
import time
start = time.time()

fun()

# python 2
print 'It took', time.time()-start, 'seconds.'

# python 3
print('It took', time.time()-start, 'seconds.')

5
अंतिम पंक्ति शायद print('It took {0:0.1f} seconds'.format(time.time() - start))अजगर 3.x में पढ़नी चाहिए ।
क्रिस मुलर

3
@ क्रिसम्युलर I python2.7 में काम कर रहा था। मैं यहाँ टिप्पणी छोड़ दूँगा, हालांकि लोग दोनों संस्करणों को देख सकते हैं।
डबल AA

15

आमतौर पर मैं जो भी करता हूं उसका उपयोग clock()या पुस्तकालय time()से करता हूं timeclockउपाय दुभाषिया समय, जबकि timeप्रणाली समय उपाय। में अतिरिक्त केवेट मिल सकते हैंडॉक्स

उदाहरण के लिए,

def fn():
    st = time()
    dostuff()
    print 'fn took %.2f seconds' % (time() - st)

या वैकल्पिक रूप से, आप उपयोग कर सकते हैं timeit। मैं अक्सर timeदृष्टिकोण का उपयोग करता हूं कि मैं कितनी तेजी से इसे बाहर धमाका कर सकता हूं, लेकिन यदि आप एक अलग-अलग सक्षम कोड का समय निर्धारित कर रहे हैं,timeit काम आता है।

से timeit डॉक्स ,

def test():
    "Stupid test function"
    L = []
    for i in range(100):
        L.append(i)

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()

फिर मिनटों में बदलने के लिए, आप बस 60 से विभाजित कर सकते हैं। यदि आप आसानी से पढ़ने योग्य प्रारूप में स्क्रिप्ट रनटाइम चाहते हैं, चाहे वह सेकंड हो या दिन, आप इसे timedeltaऔर strइसे में परिवर्तित कर सकते हैं :

runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)

और वह फॉर्म का कुछ प्रिंट आउट लेगा [D day[s], ][H]H:MM:SS[.UUUUUU]। आप समयसीमा डॉक्स देख सकते हैं

और अंत में, यदि आप वास्तव में अपने कोड की रूपरेखा तैयार कर रहे हैं, तो पायथन प्रोफाइल लाइब्रेरी को भी उपलब्ध कराता है।


15
import time 

startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))

पिछला कोड मेरे लिए कोई समस्या नहीं है!


14
import sys
import timeit

start = timeit.default_timer()

#do some nice things...

stop = timeit.default_timer()
total_time = stop - start

# output running time in a nice format.
mins, secs = divmod(total_time, 60)
hours, mins = divmod(mins, 60)

sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))

50 सेकंड के लिए प्रिंट आउट "0: 0: 50" है
htzfun

10

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

>>>fun(input)
output

अच्छा, यह काम करता है, अब समयसीमा आयात करें और एक टाइमर सेट करें

>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>

अब हमारे पास अपना टाइमर सेट है हम देख सकते हैं कि इसमें कितना समय लगता है

>>>t.timeit(number=1)
some number here

और वहां हम जाते हैं, यह आपको बताएगा कि उस फ़ंक्शन को निष्पादित करने में कितने सेकंड (या कम) लगे। यदि यह एक सरल कार्य है तो आप इसे t.timeit (संख्या = 1000) (या किसी भी संख्या पर!) तक बढ़ा सकते हैं और फिर औसत प्राप्त करने के लिए उत्तर को संख्या से विभाजित कर सकते हैं।

आशा है कि ये आपकी मदद करेगा।


0

समय और डेटाटाइम पैकेज का उपयोग करें।

अगर कोई भी इस स्क्रिप्ट को निष्पादित करना चाहता है और यह भी पता लगा सकता है कि मिनटों में निष्पादित करने में कितना समय लगा

import time
from time import strftime
from datetime import datetime 
from time import gmtime

def start_time_():    
    #import time
    start_time = time.time()
    return(start_time)

def end_time_():
    #import time
    end_time = time.time()
    return(end_time)

def Execution_time(start_time_,end_time_):
   #import time
   #from time import strftime
   #from datetime import datetime 
   #from time import gmtime
   return(strftime("%H:%M:%S",gmtime(int('{:.0f}'.format(float(str((end_time-start_time))))))))

start_time = start_time_()
# your code here #
[i for i in range(0,100000000)]
# your code here #
end_time = end_time_()
print("Execution_time is :", Execution_time(start_time,end_time))

उपरोक्त कोड मेरे लिए काम करता है। आशा है कि ये आपकी मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.