在窗口內pycurl給出了精確到3位小數的時間,有沒有辦法將此改進到更精確的方式?窗口上的CURL精度
> print c.getinfo(pycurl.CONNECT_TIME)
> 0.265
Linux的例子給它大約7位小數。
在窗口內pycurl給出了精確到3位小數的時間,有沒有辦法將此改進到更精確的方式?窗口上的CURL精度
> print c.getinfo(pycurl.CONNECT_TIME)
> 0.265
Linux的例子給它大約7位小數。
縱觀源pycurl,它只是調用底層捲曲功能:
case CURLINFO_CONNECT_TIME: // other cases [snip]ped
/* Return PyFloat as result */
double d_res = 0.0;
res = curl_easy_getinfo(self->handle, (CURLINFO)option, &d_res);
if (res != CURLE_OK) {
CURLERROR_RETVAL();
}
return PyFloat_FromDouble(d_res);
}
這又確實
case CURLINFO_CONNECT_TIME:
*param_doublep = data->progress.t_connect;
break;
和t_connect
由
data->progress.t_connect = Curl_tvdiff_secs(now, data->progress.t_startsingle);
分配給哪個參考文獻t_startsingle
,其由分配,它是Windows下定義爲
struct timeval curlx_tvnow(void)
{
/*
** GetTickCount() is available on _all_ Windows versions from W95 up
** to nowadays. Returns milliseconds elapsed since last system boot,
** increases monotonically and wraps once 49.7 days have elapsed.
*/
struct timeval now;
DWORD milliseconds = GetTickCount();
now.tv_sec = milliseconds/1000;
now.tv_usec = (milliseconds % 1000) * 1000;
return now;
}
即,精確到毫秒。
因爲缺少修補和重新編譯cURL以使用更高精度的定時器,所以編譯pyCURL反對,沒有。抱歉!
恐怕這是底層libcurl代碼的限制。它使用在Windows中的GetTickCount()函數調用,這是documented like this:
GetTickCount函數的分辨率被限制爲 分辨率系統定時器的,這是通常在10 毫秒到16的範圍內毫秒。