使用超时调用gevent.sleep

时间:2016-03-03 03:02:47

标签: python gevent event-loop

我基本上希望gevent.sleep的行为类似于time.sleep,因为它会在完全(而不是至少)之后返回执行一些秒数,但允许其他Greenlets在此期间运行。

一个例子:

import gevent
def a():
    while True:
        print "A"
        gevent.sleep(0.2)
def b():
    gevent.spawn(a)
    while True:
        print "B"
        gevent.sleep(1)
b()
# often get more than 10 or 20 'A's for each 'B', would expect close to 5

有没有更好的方法来获得理想的行为?

1 个答案:

答案 0 :(得分:1)

你的代码非常好。我在我的linux机器上运行它并输出了这个:

乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 甲

所以它在我的结尾非常可靠,运行gevent 1.0.1和python2.7。 如果它不适合你,你可能想尝试更新python或gevent。