睡眠到一定时间过去
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
我在 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