你把它提升到了一个新的水平。 谢谢。 我自己已经解决了它,但我可能会使用你的加法计算超过1秒。 这是我的荣幸 : )…

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()