2016-07-22 22 views
3

Ich frage mich, warum python 2.7gettimeofday() verwendet, wenn time.time() ausgeführt wird, aber noch nicht in python 3.4 es nicht?Python time.time() Unterschiede in Python 2 vs 3

Es erscheint, wenn Strace ausgeführt, dass es kann die Abfrage/etc/localtime

+0

tun Gesicht u irgendein Problem mit ihm? –

+0

Gibt es ein Problem mit der unterschiedlichen Implementierung? Das Python 3 'time'-Modul wurde überarbeitet, als die verschiedenen neuen Uhrentypen hinzugefügt wurden. –

+0

Ja mit der virtuellen Zeitkernel https://github.com/littlepretty/VirtualTimeKernel Welche stützt sich auf GToD – channon

Antwort

3

Python 3 wird gettimeofday() verwenden, wenn Ihr System erkannt wurde diese bei der Kompilierung zu unterstützen. Doch auf POSIX-Systemen wird es nur verwenden, wenn clock_gettime(CLOCK_REALTIME) nicht verfügbar ist, statt; nach dem POSIX 2008 standard wird letzteres bevorzugt, da gettimeofday() veraltet angesehen wird.

Zur Laufzeit können Sie abfragen, was Python dachten, dass Ihr System bei der Kompilierung unterstützen könnte, indem die time.get_clock_info() function verwenden, die eine namedtuple Instanz mit einem implementation Feld zurückgibt:

Implementierung: Der Name des zugrunde liegenden C-Funktion verwendet, um den Taktwert

auf meinem OSX 10.11 System zu erhalten, für die 'time' Uhr, das erzeugt gettimeofday():

>>> time.get_clock_info('time').implementation 
'gettimeofday()' 

Sie können die pygettimeofday() C implementation lesen, um zu sehen, welche Implementierungen verwendet werden können; Unter Windows wird beispielsweise GetSystemTimeAsFileTime() verwendet.

+0

Danke für die Info. Ich werde versuchen, es zu zwingen, GToD als seinen Taktmechanismus zu verwenden. – channon

+0

@channon: Ich bin mir nicht sicher, warum Sie so arbeiten müssen, wie ich es sehe [VirtualTimeKernel unterstützt 'clock_gettime()'] (https://github.com/littlepretty/VirtualTimeKernel/blob/7d3b11be676df5e828f9c52b34990ebc55330e72/arch/x86/vdso/vclock_gettime.c). –

+0

, da die virtuelle Zeit nur Auswirkungen es GToD ist in dem Code für diese Funktion – channon