使用循环在python中等待比睡眠命令更多的CPU密集型?

Pie*_*oni 1 python sleep wait python-3.x

在python 3上我需要停止一段时间.当我醒来时,我需要相当准确.问题是在这个暂停中我应该进行一些计算,这些计算将花费一部分时间.所以我time.sleep()不能通过它,否则我会开始得太晚.

所以我在考虑运行这段代码:

import time
wakeuptime=time.time()+20 #start again exactly 20 seconds from now
UnpredictablySlowFunction()  
while (time.time()<wakeuptime): 
    pass
Run Code Online (Sandbox Code Playgroud)

我有点担心这种循环可能比普通的CPU更密集time.sleep().特别是考虑到程序应该在后台运行24/7.

run*_*g.t 6

正如@tobias_k在评论中提到的那样,试试这个:

import time
wakeuptime=time.time()+20 #start again exactly 20 seconds from now
UnpredictablySlowFunction()  
time_left = wakeuptime -time.time()
time.sleep(time_left)
Run Code Online (Sandbox Code Playgroud)

  • 但是,在调用`time.sleep`之前,确保`time_left`为正. (2认同)