如何将循环的一次迭代限制为以秒为单位的固定时间?

时间:2019-05-15 02:10:46

标签: python python-3.x python-2.7

我正在尝试对两个设备进行编程-第一个通过调用应用程序并手动单击程序,第二个通过调用批处理文件并等待其完成。我需要此循环的每次迭代都为30秒,以便可以对两个设备进行编程。

我尝试记录启动迭代所花费的时间,以及第二台设备编程结束时的时间。然后我将其设置为time.sleep(总共花费30时间)。每次迭代返回的执行时间略大于30 s。

for i in range(48):
  t1 = time.time()
  #program 1st board by calling app from python and clicking it using python.
  #wait a static number of seconds (s) as there is no feedback from this app.
  #program 2nd board by calling a batch file.
  #this gives feedback as the code does not move to the next line until the 
  #batch file is finished
  t2 = time.time()
  time.sleep(30-(t2-t1))
#some other code

实际结果:超过30秒。 预期结果:正好30秒。 这是因为python中的计划吗?

1 个答案:

答案 0 :(得分:0)

这是在操作系统中安排 的结果。当某个进程通过调用sleep放弃处理器时,不能保证,它将在对sleep的调用中请求的经过时间之后唤醒。根据系统的繁忙程度,它可能会延迟一点,也可能会延迟很多。

如果您有严格的计时要求,则需要一个实时操作系统。