অজগর স্ক্রিপ্টটি কার্যকর করার জন্য সময় নিয়েছিল তা সন্ধান করুন


143

পাইথন স্ক্রিপ্টে আমার কাছে নিম্নলিখিত কোড রয়েছে:

def fun(): 
  #Code here

fun()

আমি এই স্ক্রিপ্টটি কার্যকর করতে চাই এবং কয়েক মিনিটের মধ্যে এটি কার্যকর করতে কত সময় লেগেছে তাও জানতে চাই। এই স্ক্রিপ্টটি কার্যকর করতে কত সময় লেগেছে তা আমি কীভাবে জানতে পারি? একটি উদাহরণ সত্যিই প্রশংসা করা হবে।


5
"পাইথন ফাংশন টাইমিং" এর জন্য অনুসন্ধানে প্রথম হিট: দানিউব.com
software-

আপনি সিপ্রোফাইলও ব্যবহার করতে পারেন । প্রতিটি ফাংশনকে আলাদাভাবে সময় দেওয়ার জন্য আপনাকে বিকল্প দেয়
অ্যাডাম রোসান্থাল

উত্তর:


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

#do something

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

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

5
পাইথনে নতুন, ৩. 3..১-এ কাজ করছে। এফওয়াইআই ডেটটাইমের আর কোনও বৈশিষ্ট্য নেই।
উইজলউজল

5
@ উইজলওয়াজল datetime.now()যদি কাজ করে তবেই কাজ করে from datetime import datetime, কেবল import datetime(পাইথন ৩.6.৪-তে নিশ্চিত)।
পল উইকিং

130

আপনি লিনাক্স বা ইউনিক্সের কমান্ড লাইন থেকে স্ক্রিপ্টটি কার্যকর করেন? সেক্ষেত্রে আপনি কেবল ব্যবহার করতে পারেন

time ./script.py

2
time -p ./script.py -pপাইপলাইনের জন্য পতাকা
জয়

1
এবং পাইপলাইন আমাদের কী সাহায্য করে?
ak3191

উইন্ডোজের জন্য টাইম পাইথন মাইস্ক্রিপ্ট.পি.পি আউট পুটটি সেকেন্ডে এক্সিকিউশন সময় হবে: 38.509970903396606 আসল 0 এম 38.792 সে ব্যবহারকারী 0 এম0.015
এস সিএস 0 এম0.046

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
@ ক্রিসমুয়েলার আমি পাইথন ২..7 এ কাজ করছিলাম। আমি মন্তব্যটি এখানে রাখব যদিও লোকেরা উভয় সংস্করণ দেখতে পারে।
ডাবল এএ

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 দ্বারা বিভাজন করতে পারেন you আপনি যদি স্ক্রিপ্ট রানটাইমটি সহজেই পঠনযোগ্য বিন্যাসে চান তবে এটি সেকেন্ড বা দিন হোক না কেন, আপনি এটিতে 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

টাইমিট মডিউলটি ব্যবহার করুন। এটা খুব সহজ. আপনার example.py ফাইলটি চালান যাতে এটি পাইথন শেলটিতে সক্রিয় থাকে, আপনার এখন শেলটিতে আপনার ফাংশনটি কল করতে সক্ষম হওয়া উচিত। এটি কাজ করে কিনা তা পরীক্ষা করে দেখুন

>>>fun(input)
output

ভাল, এটি কাজ করে, এখন টাইমিট আমদানি করে একটি টাইমার সেট আপ করুন

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

এখন আমাদের টাইমার সেট আপ হয়েছে আমরা দেখতে পাই যে এটি কতক্ষণ সময় নেয়

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

এবং সেখানে আমরা যাচ্ছি, এটি আপনাকে জানাবে যে এই ফাংশনটি সম্পাদন করতে কত সেকেন্ড (বা তার কম) লেগেছে। যদি এটি একটি সাধারণ ফাংশন হয় তবে আপনি এটিকে টি.টাইমাইট (সংখ্যা = 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))

উপরের কোডটি আমার পক্ষে কাজ করে। আশা করি এটা কাজে লাগবে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.