Jaki jest właściwy sposób dwukrotnego porównania w Pythonie, aby przyspieszyć testowanie sekcji kodu? Próbowałem przeczytać dokumentację API. Nie jestem pewien, czy rozumiem kwestię timedelta.
Póki co mam taki kod:
from datetime import datetime
tstart = datetime.now()
print t1
# code to speed test
tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here
python
datetime
time
time-measurement
BuddyJoe
źródło
źródło
Odpowiedzi:
datetime.timedelta
to tylko różnica między dwoma datami ... więc jest to okres w dniach / sekundach / mikrosekundachNależy pamiętać, że
c.microseconds
zwraca tylko część mikrosekund z timedelta! Do celów pomiaru czasu zawsze używajc.total_seconds()
.Za pomocą datetime.timedelta możesz wykonywać różne obliczenia matematyczne, np .:
Bardziej przydatne może być spojrzenie na czas procesora zamiast na zegar ścienny ... jest to jednak zależne od systemu operacyjnego ... w systemach uniksopodobnych sprawdź polecenie „time”.
źródło
int(c.total_seconds() / 60)
w tym przypadku skorzystaćOd Pythona 2.7 istnieje metoda timedelta.total_seconds (). Aby uzyskać liczbę milisekund, które upłynęły:
źródło
Możesz zamiast tego użyć modułu timeit .
źródło
Możesz również użyć:
Lub możesz użyć profilerów Pythona .
źródło
start = time.clock()
drukujeDeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
.Wiem, że jest późno, ale naprawdę lubię używać:
time.time()
daje sekundy od epoki. Ponieważ jest to ustandaryzowany czas w sekundach, możesz po prostu odjąć czas rozpoczęcia od czasu zakończenia, aby uzyskać czas procesu (w sekundach).time.clock()
jest dobry do testów porównawczych, ale uważam, że jest to trochę bezużyteczne, jeśli chcesz wiedzieć, jak długo trwał Twój proces. Na przykład stwierdzenie „mój proces trwa 10 sekund” jest znacznie bardziej intuicyjne niż stwierdzenie „mój proces zajmuje 10 jednostek zegara procesora”W pierwszym przykładzie powyżej pokazany jest czas 0,05 dla time.clock () w porównaniu z 0,06377 dla time.time ()
W drugim przykładzie czas procesora pokazuje „0”, mimo że proces spał przez sekundę.
time.time()
poprawnie pokazuje trochę więcej niż 1 sekundę.źródło
import time
oświadczeniaPoniższy kod powinien wyświetlać detla czasu ...
źródło
Możesz po prostu wydrukować różnicę:
źródło
Nie jestem programistą Pythona, ale wiem, jak korzystać z Google i oto co znalazłem: używasz operatora „-”. Aby uzupełnić kod:
Ponadto wygląda na to, że możesz użyć funkcji strftime () do sformatowania obliczenia przedziału czasu w celu renderowania czasu, ale sprawia, że jesteś szczęśliwy.
źródło
time.time () / datetime jest dobre do szybkiego użycia, ale nie zawsze jest w 100% dokładne. Z tego powodu lubię używać jednego z standardowych profilów lib (szczególnie hotshot), aby dowiedzieć się, co jest.
źródło
Możesz zajrzeć do modułów profilu . Uzyskasz dokładniejszy odczyt lokalizacji spowolnień, a większość Twojej pracy będzie w pełni zautomatyzowana.
źródło
Oto niestandardowa funkcja, która naśladuje funkcje Matlaba / Octave
tic
toc
.Przykład użycia:
Funkcja:
źródło
Możesz użyć timeit w ten sposób do przetestowania skryptu o nazwie module.py
źródło
Strzałka: Lepsze daty i godziny dla Pythona
źródło