Programuję w python na windows i chciałbym dokładnie zmierzyć czas potrzebny na uruchomienie funkcji. Napisałem funkcję "time_it", która przyjmuje inną funkcję, uruchamia ją i zwraca czas potrzebny na uruchomienie.Dokładny czas funkcji w python
def time_it(f, *args):
start = time.clock()
f(*args)
return (time.clock() - start)*1000
nazywam to 1000 razy i średnie wyniki. (Stała 1000 na końcu to udzielenie odpowiedzi w milisekundach.)
Ta funkcja wydaje się działać, ale mam dokuczliwe uczucie, że robię coś złego, i robiąc to w ten sposób, używam więcej czasu niż funkcja faktycznie używa, gdy działa.
Czy istnieje bardziej standardowy lub akceptowany sposób na zrobienie tego?
Kiedy zmieniłem funkcję testu, aby wywołać wydruk, aby trwało dłużej, funkcja time_it zwraca średnio 2,5 ms, podczas gdy cProfile.run ("f()" zwraca średnią wartość 7.0 ms. Pomyślałem, że moja funkcja przeceniłaby czas, jeśli cokolwiek, co tu się dzieje?
Jedna uwaga dodatkowa, to względny czas funkcji względem siebie, na którym mi zależy, a nie czas bezwzględny, ponieważ oczywiście będzie się on różnić w zależności od sprzętu i innych czynników.
Zignoruj mnie - ten ciąg nie jest nazwą funkcji, jest blokiem kodu eval'd. Możesz więc użyć go do szybkiego pomiaru czasu. To jest właściwa odpowiedź. A w innych wiadomościach - "nie jest" jest znacznie szybszy niż "! =" - ale może mieć inne implikacje. –
I od tej stycznej - zanim użyjesz "nie jest" dla niczego sprytnego - miej to na uwadze - http://stackoverflow.com/questions/1392433/python-why-is-hello-is-hello –