0
假設我在Python中有一個函數,並且速度非常快,所以我可以在每秒10000次的循環中調用它。在Python中隨着時間的推移均勻分佈函數調用
我想調用它,例如,每秒2000次,但調用間隔均勻(不只是調用2000次,並且等待到第二次結束)。我如何在Python中實現這一點?
假設我在Python中有一個函數,並且速度非常快,所以我可以在每秒10000次的循環中調用它。在Python中隨着時間的推移均勻分佈函數調用
我想調用它,例如,每秒2000次,但調用間隔均勻(不只是調用2000次,並且等待到第二次結束)。我如何在Python中實現這一點?
您可以使用內置的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
安排事件在特定時間發生。
你看過Python的[sleep()](http://www.tutorialspoint.com/python/time_sleep.htm)方法嗎?您可以在每次函數調用之前調用它。你只需要找出一個最適合你情況的時間(以毫秒爲單位)。 – Xetnus
取決於它被調用的地方。一種天真的方式是調用'time.sleep(1/2000)',但不能保證是2000x/sec,並且可能會讓整個進程陷入睡眠狀態,這可能不是您想要的。 –
是的,我已經看過它,但我發現這個:http://stackoverflow.com/questions/1133857/how-accurate-is-pythons-time-sleep 看起來像你不能依靠它適用於高頻率/低延遲 – pushist1y