SORU
1 EYLÜL 2010, ÇARŞAMBA


Ölçüm Zamanı modülü ile geçen zaman

Zaman python modülü ile geçen süreyi ölçmek mümkün mü? Eğer öyleyse, bunu nasıl yapabilirim?

Eğer imleç bir olay olur belli bir süre için bir widget varsa, bunu yapmak istiyorum.

CEVAP
1 EYLÜL 2010, ÇARŞAMBA


start_time = time.time()
# your code
elapsed_time = time.time() - start_time

Ayrıca çeşitli fonksiyonları yürütme zamanı ölçümü kolaylaştırmak için basit bir dekoratör yazabilirsiniz:

import time
from functools import wraps

PROF_DATA = {}

def profile(fn):
    @wraps(fn)
    def with_profiling(*args, **kwargs):
        start_time = time.time()

        ret = fn(*args, **kwargs)

        elapsed_time = time.time() - start_time

        if fn.__name__ not in PROF_DATA:
            PROF_DATA[fn.__name__] = [0, []]
        PROF_DATA[fn.__name__][0]  = 1
        PROF_DATA[fn.__name__][1].append(elapsed_time)

        return ret

    return with_profiling

def print_prof_data():
    for fname, data in PROF_DATA.items():
        max_time = max(data[1])
        avg_time = sum(data[1]) / len(data[1])
        print "Function %s called %d times. " % (fname, data[0]),
        print 'Execution time max: %.3f, average: %.3f' % (max_time, avg_time)

def clear_prof_data():
    global PROF_DATA
    PROF_DATA = {}

Kullanımı:

@profile
def your_function(...):
    ...

Birden fazla işlevi aynı anda profil. Baskı Ölçümler sadece print_prof_data aramak için Enter():

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • itfigueres

    itfigueres

    12 EKİM 2013
  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013

İLGİLİ SORU / CEVAPLAR