2015-06-16 72 views
2

我有一個時間戳列表,我需要在達到這些時間戳時調用特定的方法。這些時間戳大約相距20毫秒。如何在Python的某個時間啓動一個函數?

目前我在單獨的線程中使用繁忙的等待,但我擔心CPU過載。例如:

while True: 
    if myTimestamp > time.time(): 
    mymethod() 

while myTimestamp < time.time(): 
    time.sleep(0.1) 
mymethod() 

有沒有更有效的方式來做到這一點? 謝謝

+0

爲什麼不使用'time.sleep(time.time() - myTimestamp)' – Jkdc

+0

來回答標題中的問題;你可以使用['sleep_until()'function](https://gist.github.com/zed/7770492#file-send_at-py-L31)。 – jfs

回答

1

有幾種方法 - 有些更容易移植到不同的操作系統。

一般情況下,你可以做的是:

  1. 產卵每個任務中的每個線程
  2. 一個新的線程,獲取當前時間,並且time.sleep()的剩餘時間

這有效,但它不是非常準確。通過使用python附帶的sched模塊,你可以讓你的生活變得更輕鬆(它基本上是我上面描述的,但可能會更聰明一些)。

如果您需要微秒精度(「硬」實時約束),Python不是選擇的工具。

相關問題