Chcę się zalogować, jak długo trwa rzeczywisty czas na ścianie. Obecnie robię tak:Jak uzyskać monotoniczny czas trwania w python?
startTime = time.time()
someSQLOrSomething()
print "That took %.3f seconds" % (time.time() - startTime)
Ale to się nie powiedzie (uzyskiwanie nieprawidłowych wyników), jeśli czas jest regulowana podczas kwerendy SQL (lub cokolwiek to jest) jest uruchomiony.
Nie chcę po prostu porównywać go. Chcę go zarejestrować w aplikacji na żywo, aby zobaczyć trendy w systemie na żywo.
Chcę coś takiego jak clock_gettime (CLOCK_MONOTONIC, ...), ale w Pythonie. A najlepiej bez pisania modułu C, który wywołuje clock_gettime().
No ja nie wiem jak często jest to właściwie dostosowane. Prowadzę NTP. Ale z mononicznym zegarem nie będę musiał wpadać na takie rzeczy, jak błąd Oracle RAC, w którym zrestartował system, jeśli czas był ustawiony wstecz. Poza niewielkimi korektami NTP, istnieją sekundy przestępne, które można cofać i przewijać dalej. – Thomas
S.Lott: niepoprawny. "Sekunda skokowa to dodatnia lub ujemna korekcja jednej sekundy [...]". Przejrzenie się jest banalne. To pierwsze zdanie na temat artykułu "Leap second" na Wikipedii. Kiedy więc dodana zostanie sekunda przejściowa, NTP ponownie ustawi czas systemowy w tył (ponieważ twój system jest szybki, nie liczył się 23:59:60), co oznacza, że pomiar oparty na time.time() może być ujemny. Zaufajcie mi, wiele serwerów Oracle zostało zrestartowanych z powodu błędu, o którym wspomniałem powyżej w poprzednim numerze. Po prostu użyłem Oracle jako przykładu, w którym niektóre programy nie radzą sobie z korektami czasu. – Thomas
Nie wiem, dlaczego (niezałatwiony) Oracle 10 to robi. Po prostu tak jest i Oracle (firma) to potwierdza. – Thomas