我正在尝试对两个设备进行编程-第一个通过调用应用程序并手动单击程序,第二个通过调用批处理文件并等待其完成。我需要此循环的每次迭代都为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中的计划吗?
答案 0 :(得分:0)
这是在操作系统中安排 的结果。当某个进程通过调用sleep
放弃处理器时,不能保证,它将在对sleep
的调用中请求的经过时间之后唤醒。根据系统的繁忙程度,它可能会延迟一点,也可能会延迟很多。
如果您有严格的计时要求,则需要一个实时操作系统。