Make a loop last once second using datetime?
Stackoverflow的聪明才智,我有一个对你的追求。
目前我正在运行一个计算和数据采集发生的循环。 随着时间的推移,这些变得越来越复杂。 我希望循环的每次运行都持续一秒钟。 由于计算时间的增加,最后简单的"睡眠(1)"并没有真正帮助。
1 2 3 4 5 6 7 | while True: #here calculations happen that take more and more time print 'some of the data' sleep(1) |
我希望使用datetime来计算这些计算之前的秒/毫秒,然后将差值输入到sleep命令中。 但我不能完全理解它。 谁能帮我吗?
1 2 3 4 5 | a=datetime.now() #calculations b=datetime.now() calctime=(b-a).total_seconds() sleep(1-calctime) |
1 2 3 4 5 6 7 | a=datetime.now() #calculations b=datetime.now() calctime=b-a ms = calctime.microseconds if calctime.seconds == 0: sleep(1-ms/1000000) |
其他信息:Python速度测试 - 时差 - 毫秒
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 | from datetime import datetime import time def test(): a = datetime.now() # calculations b = datetime.now() calctime = (b - a).total_seconds() print("one") time.sleep((1 - calctime) if (1-calctime)>0.0 else 0) #if your calculation already took 1 or more than 1 second then then make the waiting time 0 print("two") test() |