How to invoke a function at an exactly given time point in Python?
如何在Python的确切时间点调用函数?
例如:
1 2 3 4 5 6 7 | import time def foo(): print time.time() start_time = time.time() expected_time_to_run_foo = start_time + 12.3456 #invoke foo |
如何使函数
P.S。:我不确定
内置的sched模块将允许您安排未来的事件。 (这里的所有代码都是Python 3)。
1 2 3 4 5 6 7 8 9 10 11 | 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。
使用忙等待可以略微提高准确度,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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() |
但是,实际上,桌面操作系统中存在许多意外延迟的原因,如果您的时序限制很紧,那么没有实时操作系统,您将无法获得可接受的结果。