使用datetime每秒进行一次循环?

时间:2018-06-21 17:56:38

标签: python loops datetime sleep

Stackoverflow的明智之举,我有一个要求。 目前,我正在运行一个循环,其中发生了计算和数据获取。随着时间的流逝,这些变得越来越复杂。我希望循环的每次运行精确地持续一秒钟。由于计算时间越来越长,最后一个简单的“ sleep(1)”并没有真正的帮助。

while True:

    #here calculations happen that take more and more time

    print 'some of the data'

    sleep(1)

我希望使用datetime来计算这些计算之前和之后将差异输入到sleep命令中的秒/毫秒。但是我不能完全解决这个问题。有人可以帮我吗?

    a=datetime.now()
    #calculations
    b=datetime.now()
    calctime=(b-a).total_seconds()
    sleep(1-calctime)

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

答案 1 :(得分:1)

  a=datetime.now()
  #calculations
  b=datetime.now()
  calctime=b-a
  ms = calctime.microseconds
  if calctime.seconds == 0:
      sleep(1-ms/1000000)

此处的其他信息:Python speed testing - Time Difference - milliseconds