2016-07-22 32 views
3

我想知道爲什麼python 2.7使用gettimeofday()運行時time.time()但尚未在python 3.4它不?python time.time()python 2 vs 3的區別

運行strace的,當它看來,它可查詢的/ etc /本地時間

+0

做u面對任何問題呢? –

+0

不同的實現有什麼問題嗎?添加了各種新的時鐘類型後,Python 3'time'模塊被徹底檢查了。 –

+0

是使用虛擬時間內核https://github.com/littlepretty/VirtualTimeKernel 哪些依賴於GToD – channon

回答

3

的Python 3將使用gettimeofday()當檢測你的系統來支持這種在編譯時。但是,在POSIX系統上,只有在clock_gettime(CLOCK_REALTIME)不可用時纔會使用該功能;根據POSIX 2008 standard,後者是優選的,因爲gettimeofday()被認爲是過時的。

在運行時,你可以查詢什麼的Python認爲你的系統可以通過使用time.get_clock_info() function,它返回一個namedtuple實例與implementation場在編譯時支持:

實施:底層的名字C函數用來獲取時鐘值

在我的OSX 10.11體系,爲'time'時鐘,產生gettimeofday()

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

您可以閱讀pygettimeofday() C implementation以查看可以使用哪些實現;例如,在Windows上使用GetSystemTimeAsFileTime()

+0

感謝您的信息。我會試着強制它使用GToD作爲它的時鐘機制。 – channon

+0

@channon:不知道爲什麼你需要我見[VirtualTimeKernel支持'clock_gettime()'](https://github.com/littlepretty/VirtualTimeKernel/blob/7d3b11be676df5e828f9c52b34990ebc55330e72/arch/x86/vdso/vclock_gettime.c )。 –

+0

,因爲虛擬時間隻影響GToD它在該函數的代碼中 – channon