2017-02-17 40 views
1

我已閱讀this question,但我希望獲得比第二個更好的定時精度:這是否可能具有libc的某些功能?如何在Cython中測量時間達到毫秒?

這裏面with nogil使用,所以當然沒有Python是不允許......

+0

在你的cython的哪個部分? '.pyx'或'.c [pp]'?對於C:http://stackoverflow.com/questions/5833094/get-a-timestamp-in-c-in-microseconds。有很多方法可以在C++中完成它。那麼也許你可以在.pyx中製作一個包裝器。 –

+0

@XinHuang in .pyx,我甚至沒有.c(除了由cython生成的一個) –

回答

-3

你爲什麼不使用日期時間?例如datetime.datetime.now()會給你當前的時間值,包括毫秒。

+0

這是Python,我正在尋找C中的東西(用nogil部分...) –

2

您可以使用POSIX clock_gettime()

from posix.time cimport clock_gettime, timespec, CLOCK_REALTIME 

cdef timespec ts 
cdef double current 
clock_gettime(CLOCK_REALTIME, &ts) 
current = ts.tv_sec + (ts.tv_nsec/1000000000.) 

這個片段店current的,因爲有高達納秒的精度(取決於你的系統)時代的秒數。

您還可以使用gettimeofday(),但它現在已經過時:

POSIX.1-2008標記的gettimeofday()爲過時,建議使用clock_gettime(2)來代替。