睡眠到一定时间过去

Sleep until a certain amount of time has passed

我在 Python 中编写了一个等待外部电机完成移动的函数,但电机移动所需的时间是可变的。我想标准化每个动作之间的时间——例如,它们都应该花费 30 秒。

有没有办法实现休眠功能,使其休眠所需的时间,直到 30 秒过去?

例如: 如果电机需要 23 秒,函数将等待 30 秒,所以它会休眠 7 秒。

这取决于您如何监控电机的运行时间。 举例来说,假设您将该值存储在一个变量中, slowdown_time

 #slowdown_time is the variable that stores the time it took for the motor to slow down.

 import time

 desired_interval = 30   #seconds

 sleep_time = desired_interval - slowdown_time

 #sleep for remaining time
 time.sleep(sleep_time)

希望对您有所帮助!

听起来不想睡 30 秒,而是用睡眠来填充执行 activity 所需的时间,这样它总是需要 30 秒。

import time
from datetime import datetime, timedelta

wait_until_time = datetime.utcnow() + timedelta(seconds=30)
move_motor()
seconds_to_sleep = (wait_until_time - datetime.utcnow()).total_seconds()
time.sleep(seconds_to_sleep)

如果您要在多个地方执行此操作,您可以创建一个可以应用于任何函数的装饰器

import functools
import time
from datetime import datetime, timedelta

def minimum_execution_time(seconds=30)
    def middle(func)
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            wait_until_time = datetime.utcnow() + timedelta(seconds=seconds)
            result = func(*args, **kwargs)
            seconds_to_sleep = (wait_until_time - datetime.utcnow()).total_seconds()
            time.sleep(seconds_to_sleep)
            return result
        return wrapper

然后你可以像这样使用它

@minimum_execution_time(seconds=30)
def move_motor(...)
    # Do your stuff