3
Python 的 time.sleep 时间不准什么原因?
source link: https://www.v2ex.com/t/847591
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
做了一个抢购脚本,大概逻辑就是获取开抢时间,然后判断当前时间差,超过 60 秒时每 30 秒检测一次,否则 0.5 秒检测一次,但是从打印日志上看,有时候理论休眠 0.5 秒的实际等了四五秒才执行,如果偏差一点我理解是没有获取到 CPU 时间片导致的,不过这偏差实在有点大,这是什么原因?
19 条回复 • 2022-04-18 18:11:36 +08:00
Te11UA 17 小时 46 分钟前
`st`是什么?`st-time.time()-5`又是什么意思
Te11UA 17 小时 31 分钟前
你这个的确是太久了,可能是 pycharm debug 啥的各种因素,你尝试纯命令行执行呢?
在你的场景应该用定时框架,而不是用 sleep
在你的场景应该用定时框架,而不是用 sleep
learningman 16 小时 33 分钟前
执行也有时间的,换 apscheduler 吧
lxychn 16 小时 22 分钟前
这个偏差也太大了,什么版本的 python ,尝试升级一下。
chenxytw 16 小时 19 分钟前
这种时间敏感使用场景不要使用 sleep ,和是不是小脚本倒没有关系.....
akira 15 小时 49 分钟前
看实现原理。另外是不是你服务器 cpu 都爆了啊。。
dangyuluo 15 小时 46 分钟前
感觉不应该啊。。scheduler 怎么会这么久才分配。
mansurx 13 小时 36 分钟前
这是程序执行两次的时间差吧,每次 running 和 logging 也有时间成本,受 IO 影响,如果抢购是联网的话,还受网络因素影响。
要测试 sleep ,可以前后加个时间戳,看看差值是否稳定。
要测试 sleep ,可以前后加个时间戳,看看差值是否稳定。
est 13 小时 30 分钟前
你这 while 就这么几行,还是干了别的?干别的事是不是可能导致耗时?
fcfangcc 10 小时 40 分钟前
完整代码贴一下,感觉不应该
chionetw5 10 小时 20 分钟前
多进程写文件 IO 阻塞?
guoqiao 10 小时 17 分钟前
有没有可能,你这里的 self.running 其实是一个 property, 而它比较耗时?
或者你的 logging 正在写一个文件,而那个文件已经超大.
建议贴一下完整代码.
或者你的 logging 正在写一个文件,而那个文件已经超大.
建议贴一下完整代码.
zhangjinghua 10 小时 9 分钟前
没有完整代码真不好确定,是不是访问互联网了啥啊,要不然把 sleep 单独弄一个线程出来
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK