Diyelimki Python’da çalışması biraz zaman alan bir komut satırı programım var. Bu programın yürütülmesi için geçen süreyi tam olarak bilmek istiyorum. Ne yaparım?
En basit yol olarak Python time
modülünü içe aktarabiliriz:
import time
baslangic_zamani = time.time()
main()
print("--- %s saniye ---" % (time.time() - baslangic_zamani))
Çıktı:
--- 0.764891862869 saniye ---
Bu kod gerçek zamanı hesaplar (diğer programlar tarafından kullanılan süre de dahil). Bu nedenle bilgisayarınız başka şeyler yapmakla meşgul olduğunda yazdığınız kod daha fazla zaman alıyor gibi görünür.
Alternatif bir yöntem olarak aşağıdaki kodu timings.py
olarak site-packages klasörüne yerleştirebilirsiniz. Böylece import timing
ile daha sonra çağırabilirsiniz. Bu kod programı durdurmak için Ctrl-C tuşuna bastığınızda da çalışan temiz bir çözüm sunar.
Python 2
import atexit
from time import clock
def secondsToStr(t):
return "%d:%02d:%02d.%03d" % \
reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
[(t*1000,),1000,60,60])
line = "="*40
def log(s, elapsed=None):
print line
print secondsToStr(clock()), '-', s
if elapsed:
print "Elapsed time:", elapsed
print line
print
def endlog():
end = clock()
elapsed = end-start
log("End Program", secondsToStr(elapsed))
def now():
return secondsToStr(clock())
start = clock()
atexit.register(endlog)
log("Start Program")
Python 3
import atexit
from time import time, strftime, localtime
from datetime import timedelta
def secondsToStr(elapsed=None):
if elapsed is None:
return strftime("%Y-%m-%d %H:%M:%S", localtime())
else:
return str(timedelta(seconds=elapsed))
def log(s, elapsed=None):
line = "="*40
print(line)
print(secondsToStr(), '-', s)
if elapsed:
print("Elapsed time:", elapsed)
print(line)
print()
def endlog():
end = time()
elapsed = end-start
log("End Program", secondsToStr(elapsed))
start = time()
atexit.register(endlog)
log("Start Program")