如何在 Python 中的某个特定时间点调用函数?
例如:
import time
def foo():
print time.time()
start_time = time.time()
expected_time_to_run_foo = start_time + 12.3456
#invoke foo
如何使函数foo
打印给定的值expected_time_to_run_foo
?
PS:我不确定是否time.sleep()
有效。我需要更精确。
内置的 sched 模块可让您安排未来的活动。(这里的所有代码都是 Python 3)。
import sched
import time
def print_something(x):
print(x)
s = sched.scheduler()
s.enter(1, 0, print_something, ['first'])
s.enter(2, 0, print_something, ['second'])
s.run()
您可以提供自己的函数来获取当前时间并等到未来的指定时间。默认值为 time.monotonic(time.time 的调整版本)和 time.sleep。
您可以使用忙等待来稍微提高准确性,如下所示:
import sched
import time
def print_something(x):
print(x)
def busy_wait(target):
while time.monotonic() < target:
pass
s = sched.scheduler(delayfunc=busy_wait)
s.enter(1, 0, print_something, ['first'])
s.enter(2, 0, print_something, ['second'])
s.run()
但是,实际上,桌面操作系统中有很多意外延迟的来源,如果您的时间限制那么紧,那么如果没有实时操作系统,您将永远无法获得可接受的结果。