如何在无限循环内的elif条件满足时制作一个计时器,尽可能轻便
How to make a timer when elif condition inside infinite loop is satisfied, which is as light as possible
我有与plc通信的视频处理代码。在无限循环中,我需要 timer/counter 来执行命令。代码如下所示:
while True:
if(condition1):
#do something
elif(condition2):
#do another thing
elif(condition3):
#do another thing
elif(condition_10s_passed):
print("You have waited too long")
在这里我无法从 time 实现 time.sleep()
或从 tkinter 实现 root.after()
因为它们停止了我没有 want.I 检查 threading.timer()
但不能的 while 循环也实现了它。
我使用 mediapipe 的姿势检测算法,并在屏幕上显示视频。我也找到了解决方案,但它导致视频帧率下降,所以我要求更好的解决方案。
我的解决方案是这样的:我在除 elif
之外的所有地方定义了 old_time
,在其中我检查了时间过去的条件。然后我将当前时间与 old_time 之间的差异来测量经过的时间。
while True:
old_time=time.time()
if(condition1):
old_time=time.time()
#do something
elif(condition2):
old_time=time.time()
#do another thing
elif(condition3):
old_time=time.time()
#do another thing
elif (time.time()-oldtime)>10:
print("You have waited too long")
fps 下降的原因可能是其他原因,但它是在我实施此解决方案后开始的。我不是优化代码方面的专家,我需要知道 fps 问题是否是由于太多 old_time 定义造成的。
注意:这是我的第一个问题,我愿意接受有关我的问题(其标题、内容、定义等)的评论
我找到了解决办法。我使用 time.sleep() 但在另一个线程中不中断 while 循环。
#5 seconds timer
def timer():
global limit_time
limit_time = False
time.sleep(5)
limit_time = True
#Starting the timer in another thread when condition is satisfied
if("condition to start timer"):
thread1 = Thread(target=timer)
thread1.start()
这里当条件满足时调用函数 timer
等待 5 秒然后将变量 limit_time
更改为 True
。然后在代码中我通过检查变量 limit_time
.
知道 5 秒过去了
我有与plc通信的视频处理代码。在无限循环中,我需要 timer/counter 来执行命令。代码如下所示:
while True:
if(condition1):
#do something
elif(condition2):
#do another thing
elif(condition3):
#do another thing
elif(condition_10s_passed):
print("You have waited too long")
在这里我无法从 time 实现 time.sleep()
或从 tkinter 实现 root.after()
因为它们停止了我没有 want.I 检查 threading.timer()
但不能的 while 循环也实现了它。
我使用 mediapipe 的姿势检测算法,并在屏幕上显示视频。我也找到了解决方案,但它导致视频帧率下降,所以我要求更好的解决方案。
我的解决方案是这样的:我在除 elif
之外的所有地方定义了 old_time
,在其中我检查了时间过去的条件。然后我将当前时间与 old_time 之间的差异来测量经过的时间。
while True:
old_time=time.time()
if(condition1):
old_time=time.time()
#do something
elif(condition2):
old_time=time.time()
#do another thing
elif(condition3):
old_time=time.time()
#do another thing
elif (time.time()-oldtime)>10:
print("You have waited too long")
fps 下降的原因可能是其他原因,但它是在我实施此解决方案后开始的。我不是优化代码方面的专家,我需要知道 fps 问题是否是由于太多 old_time 定义造成的。
注意:这是我的第一个问题,我愿意接受有关我的问题(其标题、内容、定义等)的评论
我找到了解决办法。我使用 time.sleep() 但在另一个线程中不中断 while 循环。
#5 seconds timer
def timer():
global limit_time
limit_time = False
time.sleep(5)
limit_time = True
#Starting the timer in another thread when condition is satisfied
if("condition to start timer"):
thread1 = Thread(target=timer)
thread1.start()
这里当条件满足时调用函数 timer
等待 5 秒然后将变量 limit_time
更改为 True
。然后在代码中我通过检查变量 limit_time
.