作者XperiaZ6C (苔寺附中)
看板Python
标题[问题] 不影响回圈效率情况下倒数
时间Sun Dec 9 18:58:49 2018
我尝试写一个函数来计算手机打电话的call setup time
先用dialTime记下拨出去时候的时间
然後用while回圈不断去确认手机是否有收到响铃声
当inCall()函数回传值True时表示这通电话已经进入连结状态
当foregroundCallState值为4的时候就是收到响铃声了
此时就用当下时间减去拨号时间
即能顺利得到call setup time
平均每通VoLTE call的call setup time约0.5xxxxx秒
程式码如下图
https://i.imgur.com/SSCJmXr.png
我的问题是後面被我注解的那三行
因为有一种例外状况是手机按下拨号
却未如预期般地拨出而直接结束了这通电话
即inCall()函数会永远都是False值而卡在无限回圈
所以被我注解的部分原本概念是
若是拨号10秒之後发现并没有成功进入连接状态就回传-1结束
但是因为多跑了这一个确认步骤
让我的VoLTE call的call setup time暴增到约1.2xxxxx秒
想请问有没有什麽方法在不影响回圈执行效率的情况下倒数吗?
至於为什麽不直接处理inCall()回传False的原因是回圈执行速度太快了
按下拨号的瞬间
程式码会跑得比电话进入连接状态还要快
意即电话还没进入连结状态之前回圈就已经做出判断了
所以若是多处理这步的话
那不管电话是不是真的有接通
都会先进入到inCall() == False这个部分
还请各位前辈指点一下
或是我用无限回圈来做计算这个想法本身就是很大的bug?
谢谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.218.54.100
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1544353139.A.08B.html
1F:推 v86861062: 图片打不开:(12/09 19:51
不好意思,我更新了连结,麻烦您帮忙看一下,感谢
※ 编辑: XperiaZ6C (124.218.54.100), 12/09/2018 20:14:32
感谢T大,我试试看用thread能不能解决
※ 编辑: XperiaZ6C (104.133.15.107), 12/11/2018 12:10:13