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