Używam czasu Pythona, aby ocenić czas ramy procesu selenu. Mój skrypt jest taki ...

start_time = time.clock()
...
#ending with
final_time = '{0:.2f}'.format(time.clock()-start_time)

Kiedy pobiegł na systemie Windows, dostanę coś takiego jak 55.22, ale jeśli pobiegł na Mac, zwróci coś takiego jak .14, nawet jeśli chodziło o tym samym w tym samym czasie.

Jakiś pomysł, co dzieje się inaczej na komputerze Mac? Właściwie spróbuję również zobaczyć różnice.

1
Shane 15 sierpień 2014, 00:44

2 odpowiedzi

Najlepsza odpowiedź

Za Dokumentacja, time.clock jest inna niż UNIX (w tym Mac OS X) i Windows:

W UNIX zwróć bieżący czas procesora jako numer zmiennoprzecinkowy wyrażony w sekundach. Precyzja, aw faktycznym, że bardzo definicja znaczenia "czasu procesora" zależy od funkcji C z tej samej nazwy, ale w każdym przypadku jest to funkcja do stosowania do benchmarkingu Python lub algorytmów czasowych.

W systemie Windows, ta funkcja zwraca sekundy zegara ściennego, upłynął od Pierwsze połączenie do tej funkcji, jako numer pływającego punktu, na podstawie Funkcja Win32 QueryPerformanceCounter(). Rozdzielczość jest zazwyczaj lepszy niż jeden mikrosekund.

Jeśli chcesz spójność między platformą, rozważaj time.time.

Różnica między czas procesora i czas ściany jest wyjaśniona w tym Artykuł przez Doug Hellmann - Zasadniczo zegar procesorowy postępuje tylko wtedy, gdy proces działa.

6
jonrsharpe 21 sierpień 2019, 06:52

Moduł czasu w standardowej bibliotece używa timeit.default_timer, aby zmierzyć czas ściany:

if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time

help(timeit) wyjaśnia:

The difference in default timer function is because on Windows,
clock() has microsecond granularity but time()'s granularity is 1/60th
of a second; on Unix, clock() has 1/100th of a second granularity and
time() is much more precise.  On either platform, the default timer
functions measure wall clock time, not the CPU time.  This means that
other processes running on the same computer may interfere with the
timing.  The best thing to do when accurate timing is necessary is to
repeat the timing a few times and use the best time.  The -r option is
good for this; the default of 3 repetitions is probably enough in most
cases.  On Unix, you can use clock() to measure CPU time.

Więc dla spójności między platformą możesz użyć

import timeit
clock = timeit.default_timer

start_time = clock()
...
final_time = clock()
2
unutbu 27 sierpień 2014, 13:08