我观察到多次调用gevent.idle()
会使每次连续调用变得越来越慢。使用gevent.sleep(0)
可以观察到相同的行为。
有100个电话:
>>> timeit.timeit(setup='import gevent', stmt='gevent.idle()',
number=100)
0.0005408697757047776
有100000个电话:
>>> timeit.timeit(setup='import gevent', stmt='gevent.idle()',
number=100000)
0.5255624202554827
我认为gevent.sleep
/ gevent.idle
基本上只会检查是否还有其他事情要做或立即返回。
为什么呼叫越来越慢?