2016-08-23 70 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安排事件在特定时间发生。