From 58f8adfda3c2b42f654a55500e8e3a6433cb95f2 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 22 Sep 2021 16:09:30 +0200 Subject: bpo-21302: time.sleep() uses waitable timer on Windows (GH-28483) On Windows, time.sleep() now uses a waitable timer which has a resolution of 100 ns (10^-7 sec). Previously, it had a solution of 1 ms (10^-3 sec). * On Windows, time.sleep() now calls PyErr_CheckSignals() before resetting the SIGINT event. * Add _PyTime_As100Nanoseconds() function. * Complete and update time.sleep() documentation. Co-authored-by: Livius --- Python/pytime.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'Python/pytime.c') diff --git a/Python/pytime.c b/Python/pytime.c index 8035a5f8a2..7f9f301f72 100644 --- a/Python/pytime.c +++ b/Python/pytime.c @@ -33,6 +33,7 @@ /* Conversion from nanoseconds */ #define NS_TO_MS (1000 * 1000) #define NS_TO_US (1000) +#define NS_TO_100NS (100) static void @@ -568,6 +569,16 @@ _PyTime_AsNanoseconds(_PyTime_t t) } +#ifdef MS_WINDOWS +_PyTime_t +_PyTime_As100Nanoseconds(_PyTime_t t, _PyTime_round_t round) +{ + _PyTime_t ns = pytime_as_nanoseconds(t); + return pytime_divide(ns, NS_TO_100NS, round); +} +#endif + + _PyTime_t _PyTime_AsMicroseconds(_PyTime_t t, _PyTime_round_t round) { -- cgit v1.2.1