內置調度模塊可讓您安排將來的事件。 (這裏的所有代碼都是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()
但是,現實中,有意想不到的延遲這麼多的資源在一個桌面操作系統,如果你的時間限制是如果沒有實時操作系統,你永遠不會得到可以接受的結果。
比'time.sleep(12.3456)'更精確嗎?除非你有一個實時的操作系統,否則將會有限制你獲得它的準確度 - 當然不會低至100微秒。 –
是的。因爲'foo'可能需要一些時間才能在print之前運行,恐怕'time.sleep()'不夠精確。 – Skyler
請參閱此處瞭解更多信息:http://stackoverflow.com/questions/1938048/high-precision-clock-in-python –