- 主题:time.sleep精度有问题 还是我测试方法有问题?
这个事情跟python基本无关,都是操作系统决定的
首先,操作系统有个最低调度时间,有些操作系统可能是1ms,有些可能是10ms
其次,sleep只保证最少sleep这么久(其实也不能保证最少,有可能被SIGNAL提前唤醒),实际什么时候恢复取决于操作系统的调度
【 在 misslost 的大作中提到: 】
: 我需要核实一下 time.sleep的准确效果 用如下代码 。核实的结果,震惊!
: 想请教一下,是我的方法不对,还是 time.sleep 本来就是这么不堪?有没有三方库能精确一点的?谢谢
: from time import perf_counter as pc
: ...................
--
FROM 115.171.244.*
真的跟python无关么,为什么java(还有其他的c、rust等等语言我就不需要测试了吧)他们都能sleep 1ms左右的时间,没有问题呢?第一个帖子我就发了对比数据的。
可以说这个确实符合文档的。不仅仅python的文档是这样写的,就是java的或者c的文档也是这么写的。文档是一样的,有的运行就正常一些,有的就拉跨一些。
难道python3.11在time.sleep上做了大量的改进。这些工作是没有必要没有价值吗?那些改进这些功能的人都是在浪费粮食吗
【 在 jimmycmh 的大作中提到: 】
: 这个事情跟python基本无关,都是操作系统决定的
: 首先,操作系统有个最低调度时间,有些操作系统可能是1ms,有些可能是10ms
: 其次,sleep只保证最少sleep这么久(其实也不能保证最少,有可能被SIGNAL提前唤醒),实际什么时候恢复取决于操作系统的调度
: ...................
--
FROM 120.245.130.*
【 在 misslost 的大作中提到: 】
: 我需要核实一下 time.sleep的准确效果 用如下代码 。核实的结果,震惊!
: 想请教一下,是我的方法不对,还是 time.sleep 本来就是这么不堪?有没有三方库能精确一点的?谢谢
: from time import perf_counter as pc
: ...................
Python 是因为有全局锁, 也就是一个进程并发只有一个线程实际在跑,其它线程只能挂起,
尽管你的CPU有许多核, Python圈想拿掉GIL这个全局锁的声音也一直没停歇过,但是,或许是遗留问题,
大量的库默许使用GIL,这种变动跨越可能不亚于Python2到Python3,因此有这样的尝试也限于特殊的发行
版本。
据说,python3.11 确实有改进, python的运行速度也有不小提升。
好在Python有很多扩展库, 遇到需要性能都有C/C++之类的扩展库做后援。
像这种需要操作系统支援的,一般都有封装的库的python版本。
--
FROM 124.126.3.*
你跟我吵啥,大家只是在提醒你,不能依赖sleep做分辨率很高的计时
另外,不知道你所说3.11做了大量改进的来源是啥,我对比文档基本是一样的
至于你说java的sleep很精确就更有意思了,一个full gc可能几秒就过去了,咋精确
【 在 misslost 的大作中提到: 】
: 真的跟python无关么,为什么java(还有其他的c、rust等等语言我就不需要测试了吧)他们都能sleep 1ms左右的时间,没有问题呢?第一个帖子我就发了对比数据的。
: 可以说这个确实符合文档的。不仅仅python的文档是这样写的,就是java的或者c的文档也是这么写的。文档是一样的,有的运行就正常一些,有的就拉跨一些。
: 难道python3.11在time.sleep上做了大量的改进。这些工作是没有必要没有价值吗?那些改进这些功能的人都是在浪费粮食吗
: ...................
--
FROM 115.171.244.*
【 在 misslost 的大作中提到: 】
: 真的跟python无关么
对,真的无关。别折腾了。此路不通。
--
FROM 163.125.197.*
丑人多作怪,菜鸟多震惊
换以前也许我会跟你耐心分析为什么,但现在我只想说这么多。
【 在 misslost 的大作中提到: 】
: 我需要核实一下 time.sleep的准确效果 用如下代码 。核实的结果,震惊!
: 想请教一下,是我的方法不对,还是 time.sleep 本来就是这么不堪?有没有三方库能精确一点的?谢谢
: from time import perf_counter as pc
: ...................
--
FROM 117.136.45.*
有事说事。没事闭嘴。
【 在 lvsoft 的大作中提到: 】
: 丑人多作怪,菜鸟多震惊
: 换以前也许我会跟你耐心分析为什么,但现在我只想说这么多。
--
FROM 120.245.130.*
谢谢。
不过 此问题 python3.11中已经解决。此问题只在python3.10以及之前的版本运行在windows之上存在。另外 此问题在java等其他开发平台上也没有。
【 在 flw 的大作中提到: 】
:
: 对,真的无关。别折腾了。此路不通。
--
FROM 120.245.130.*
【 在 misslost 的大作中提到: 】
: 谢谢。
: 不过 此问题 python3.11中已经解决。此问题只在python3.10以及之前的版本运行在windows之上存在。另外 此问题在java等其他开发平台上也没有。
:
不能,你测试没有, 就是解决了, 这个一定要确认,是不是属于规范里的。
就好比让红娘介绍相亲对象, 上个月介绍都是歪瓜裂枣,
这个月换帅哥了, 就以为质量解决了,下个月红娘就一定依旧给你帅哥。
另外, python是伪多线程, 线程挂起来了,或者遇到锁, 大概率还是被阻住, 换句话说,
这个sleep这个原语不适合精确计时的, 精确技术有多媒体时钟或者晶振中断的硬件支持。
--
FROM 124.126.3.*
人家就是想给自己找个台阶下,你非要把梯子给拆了。
【 在 poggy 的大作中提到: 】
: 不能,你测试没有, 就是解决了, 这个一定要确认,是不是属于规范里的。
: 就好比让红娘介绍相亲对象, 上个月介绍都是歪瓜裂枣,
: 这个月换帅哥了, 就以为质量解决了,下个月红娘就一定依旧给你帅哥。
: 另外, python是伪多线程, 线程挂起来了,或者遇到锁, 大概率还是被阻住, 换句话说,
: 这个sleep这个原语不适合精确计时的, 精确技术有多媒体时钟或者晶振中断的硬件支持。
--
FROM 163.125.197.*