Przede wszystkim porozmawiajmy o pułapkach, na które napotykałem, problemach napotykanych w produkcji, planuję wykonanie skryptu pythona i monitoruję proces, czas działania skryptu pythona jest znacznie dłuższy niż czas wykonywania programu, który liczę w skrypcie pythona. Czas monitorowania wykonania skryptów pythona wynosi 36 godzin, natomiast czas samowykonania w skryptach pythona to około 4 godzin. Pierwszą rzeczą, która przychodzi mi do głowy po problemie, jest problem z Linuksem i nie znalazłem żadnych nieprawidłowości w różnych logach. Potem myślę o py2neo używanym w Pythonie do asynchronicznego zapisu danych, blokując wykonanie procesu. Ostatecznie odkryto problem: sposób, w jaki skrypt pythona wykorzystuje time.clock() do liczenia czasu wykonania CPU, a nie czasu wykonania programu. Następnie porównajmy kilka statystyk czasu w Pythonie:
Metoda 1:
datetime.datetime.now() otrzymuje aktualną datę, a po zakończeniu wykonania programu wartość czasu uzyskaną przez tę metodę to czas wykonania programu.
Metoda 2:
time.time() aby uzyskać aktualny czas od epoki (W kilka sekund)。 Jeśli zegar systemowy je zapewnia, może być ułamek sekundy. To miejsce zwraca typ zmiennoprzecinkowy. Otrzymujemy tutaj także czas wykonania programu.
Metoda 3:
time.clock() zwraca czas CPU od momentu rozpoczęcia lub pierwszego wywołania programu. To jest tak samo precyzyjne jak nagrywanie systemowe. Zwrot jest również typu zmiennoprzecinkowego. Otrzymujesz tutaj czas wykonania CPU. Uwaga: Czas wykonania programu = czas CPU + czas IO + czas hibernacji lub oczekiwania
Oto jak testuję czas wykonania funkcji metodą 2:
|