2016-08-23 47 views
0

假設我在Python中有一個函數,並且速度非常快,所以我可以在每秒10000次的循環中調用它。在Python中隨着時間的推移均勻分佈函數調用

我想調用它,例如,每秒2000次,但調用間隔均勻(不只是調用2000次,並且等待到第二次結束)。我如何在Python中實現這一點?

+0

你看過Python的[sleep()](http://www.tutorialspoint.com/python/time_sleep.htm)方法嗎?您可以在每次函數調用之前調用它。你只需要找出一個最適合你情況的時間(以毫秒爲單位)。 – Xetnus

+0

取決於它被調用的地方。一種天真的方式是調用'time.sleep(1/2000)',但不能保證是2000x/sec,並且可能會讓整個進程陷入睡眠狀態,這可能不是您想要的。 –

+0

是的,我已經看過它,但我發現這個:http://stackoverflow.com/questions/1133857/how-accurate-is-pythons-time-sleep 看起來像你不能依靠它適用於高頻率/低延遲 – pushist1y

回答

0

您可以使用內置的sched模塊來實現通用調度器。

import sched, time 

# Initialize the scheduler 
s = sched.scheduler(time.time, time.sleep) 

# Define some function for the scheduler to run 
def some_func(): 
    print('ran some_func') 

# Add events to the scheduler and run 
delay_time = 0.01 
for jj in range(20): 
    s.enter(delay_time*jj, 1, some_func) 
s.run() 

使用s.enter方法把事件與延遲相對一調度時需要輸入的事件。也可以使用s.enterabs安排事件在特定時間發生。