SORU
20 Mayıs 2009, ÇARŞAMBA


Python fonksiyonları doğru zamanlama

Windows üzerinde python ile programlama yapıyorum ve doğru bir işlevi çalıştırmak için gereken süreyi ölçmek istiyorum. "Bir işlev başka bir işlevi alır, çalışır ve çalıştırmak için aldığın zaman döndürür. time_it yazdım

def time_it(f, *args):
    start = time.clock()
    f(*args)
    return (time.clock() - start)*1000

1000 kez ve ortalama sonuç bu diyorum. (sonunda sabit 1000 milisaniye içinde cevap vermek.)

Bu işlev, iş gibi görünüyor ama ben yanlış bir şey yapıyorum ve bu işlev aslında onun çalıştırırken kullanır daha fazla zaman kullanıyorum nedense içimi kemiren bir his var içimde.

Daha standart veya kabul bunu yapmak için bir yol var mı?

Benim test fonksiyonu daha uzun sürer, böylece bir baskı aramam değişti, benim time_it verir cProfile ise 2.5 ms ortalama fonksiyonu.('() f') verir ve 7.0 ms ortalama. Benim görevim, burada ne olup bittiğini hiçbir zaman, abartma diye düşündüm?

Bir ek not, değer verdiğim, mutlak zaman bu tabii ki donanım ve diğer faktörlere bağlı olarak değişir olarak birbirine göre fonksiyonları göreceli.

CEVAP
20 Mayıs 2009, ÇARŞAMBA


Python standart kütüphane timeit module kullanın.

Temel kullanım:

from timeit import Timer

# first argument is the code to be run, the second "setup" argument is only run once,
# and it not included in the execution time.
t = Timer("""x.index(123)""", setup="""x = range(1000)""")

print t.timeit() # prints float, for example 5.8254
# ..or..
print t.timeit(1000) # repeat 1000 times instead of the default 1million

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • sghaff1

    sghaff1

    23 Mart 2009