koddla

Yazılımcıları bilgi ile güçlendirir.

Python programının yürütülmesi için geçen süreyi nasıl ölçeriz?

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")

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top