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

时间:2018-04-05 13:51:02

标签: python python-3.x wait sleep

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

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

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

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

1 个答案:

答案 0 :(得分: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)