如何在 Python 中制作非阻塞计时器

How to make Non-blocking timer in Python

我需要你的帮助。

我需要一个非阻塞计时器,它允许我在它仍在计数的时间段内执行其他任务。 我的机器人需要这个功能,显然我不想在调用需要这些计时器的这种类型的功能时一直阻止它。

所以,过去我曾经在 Arduino (c++) 中使用 millis() 函数,但在相同的配置中似乎效果不佳

int t0 =0
int t1

void loop(){
t1= millis()
while (t1-t0 < 6000){
Serial.print(Timer!);
t0 = millis();}}

你对我有什么建议吗?我可以从哪里开始的代码? 谢谢!

以下将打印 "Timer" 6 秒:

import time

start_time = time.time() # returns number of seconds passed since epoch
current_time = time.time()

max_loop_time = 6 # 6 seconds

while (current_time - start_time) <= max_loop_time:
    # do stuff
    print("Timer")
    current_time = time.time()

好吧,我自己找到了解决方案,试图记住我之前在 Arduino 上所做的事情。

我的这个答案是基于 Adam Minas 的答案,但我的答案完全不同

所以预期的行为必须是: 每 5 秒打印(某物)所以:

import time

start_time = time.time() # returns number of seconds passed since epoch
#current_time = time.time()
print(start_time)
max_loop_time = 20 # 6 seconds

while True:

    while (time.time() - start_time) > max_loop_time:
    
            print("Timer")
            start_time = time.time()

然后你可以用 break 和其他函数停止你的 while 循环

if == smth : 
    break