- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在研究 python 标准库中的 time.sleep 函数,发现它不适用于亚毫秒延迟。从测试中我发现它实际上等待 1.1-1.2 毫秒等待 1 毫秒。实现忙等待使准确度达到 1% 以内。我用过:
def busy_wait(dt):
current_time = time.time()
while (time.time() < current_time+dt):
pass
并且在打破 1% 的准确度之前可以减少到 0.0001 秒。
我的主要问题是:
def sleep(dt): sleep(calibration_function(dt))
顺便说一句,我读到 sleep 甚至在长时间等待时都无法正常工作:Upper limit in Python time.sleep()?我还在 SO 上的某个地方读到过制作一个更短时间间隔的循环以提高精度,但是当我想延迟 0.01 秒时那是没用的。 Karl Voigtland提到使用 ctypes 的 nanosleep,但我觉得这是矫枉过正,time.sleep 应该做它的预期行为。
time.sleep 是一个损坏的 python 功能?或者没有人足够关心准确的时间测量?
最佳答案
在 Windows 上,OS Sleep 函数(Python 必须使用)只能在当前计时器间隔的倍数上唤醒线程。通常,此范围介于 1.0 毫秒和 15.6 毫秒之间。降低计时器间隔可能很方便,因为它可以缩短 sleep 时间,但会浪费电力,正如我在本文中所写:
http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
忙等待可能会提供更好的准确性,但通常是一个糟糕的想法,因为它会浪费更多的电力并从更值得执行的任务中窃取 CPU 时间:
https://randomascii.wordpress.com/2012/06/05/in-praise-of-idleness/
最后,忙等待的准确性将取决于您使用什么定时器函数来获取当前时间,并且还可能取决于定时器间隔:
https://randomascii.wordpress.com/2013/05/09/timegettime-versus-gettickcount/
为什么你想睡这么短的时间?通常最好等待某事发生——等待一个事件——而不是等待这么短的时间。
关于Python time.sleep 与忙等待准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17499837/
根据https://developers.google.com/google-apps/calendar/v3/reference/freebusy/query处的文档要执行空闲/忙碌查询,您必须在正
我在启动 Apache 后使用 XAMPP 1.7.7 我收到此警报: Busy... Apache started [Port 80] 我已经打开了 httpd.conf 文件,并将端口号更改为 8
我有端口问题。 每当我启动 Apache 时,它都会给我这个错误: Busy - Apache Started [port 80] 当我启动 Mysql 时出现以下错误: Busy - ERROR
当我运行我的代码时,我总是得到后台工作人员很忙。有帮助吗? struct FtpSetting { public string Server { get; set
在我们的 Android 和 iOS MVVMCross 应用程序中,我们偶尔会遇到 SQLiteException: busy 异常。 给定下面的代码,我们有几个存储库,每个存储库都构造一个下面的实
每次运行解决方案(20 projs)时,我都会收到此错误。我尝试禁用 UI 选项、resharper、删除未使用的扩展等,但仍然无法通过此错误。 我使用的是 VS 2015 Update 2 Ente
我正在使用这个插件 https://github.com/mozilla/rust-android-gradle ,这需要我添加 tasks.whenTaskAdded { task -> i
我是一名优秀的程序员,十分优秀!