Python's time.sleep() function is a useful tool for pausing the execution of a program. However, there are questions regarding its accuracy, especially when using floating-point numbers.
The accuracy of time.sleep() depends on the underlying operating system (OS). Non-real-time OSs, such as Windows, have a minimum sleep interval of around 10-13 milliseconds.
What does this mean? If you attempt to sleep for 50 milliseconds (0.05 seconds), time.sleep() may only pause for about 50 milliseconds from the minimum interval (10-13 ms).
To improve accuracy, it's recommended to implement a loop around time.sleep(). If the function wakes up before the intended time, it will go back to sleep for the remaining duration.
If you need more precise sleep intervals, consider using a pseudo real-time kernel, such as Ubuntu's rt kernel (RT_PREEMPT patch set). This can reduce the minimum sleep interval to around 1 millisecond.
Non-real-time Linux kernels have a minimum sleep interval closer to 1 millisecond, but it can vary in a non-deterministic manner.
Here's an example with a loop to ensure accuracy:
import time target_sleep_time = 0.05 # 50 milliseconds start_time = time.time() while True: elapsed_time = time.time() - start_time if elapsed_time >= target_sleep_time: break time.sleep(target_sleep_time - elapsed_time)
The above is the detailed content of How Accurate is Python\'s `time.sleep()` Function, and How Can I Improve Its Precision?. For more information, please follow other related articles on the PHP Chinese website!