mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Issue #23646: Enhance precision of time.sleep() and socket timeout when
interrupted by a signal Add a new _PyTime_AddDouble() function and remove _PyTime_ADD_SECONDS() macro. The _PyTime_ADD_SECONDS only supported an integer number of seconds, the _PyTime_AddDouble() has subsecond resolution.
This commit is contained in:
parent
4fa99cdb4c
commit
9a8089b32a
5 changed files with 27 additions and 15 deletions
|
@ -367,6 +367,23 @@ _PyTime_ObjectToTimeval(PyObject *obj, time_t *sec, long *usec,
|
|||
return _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
|
||||
}
|
||||
|
||||
void
|
||||
_PyTime_AddDouble(_PyTime_timeval *tv, double interval, _PyTime_round_t round)
|
||||
{
|
||||
_PyTime_timeval tv2;
|
||||
double frac;
|
||||
|
||||
frac = fmod(interval, 1.0);
|
||||
interval = floor(interval);
|
||||
tv2.tv_sec = (long)interval;
|
||||
tv2.tv_usec = (long)(frac*1e6);
|
||||
|
||||
tv->tv_sec += tv2.tv_sec;
|
||||
tv->tv_usec += tv2.tv_usec;
|
||||
tv->tv_sec += (time_t)(tv->tv_usec / 1000000);
|
||||
tv->tv_usec %= 1000000;
|
||||
}
|
||||
|
||||
int
|
||||
_PyTime_Init(void)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue