我基本上希望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
有没有更好的方法来获得理想的行为?
答案 0 :(得分:1)
你的代码非常好。我在我的linux机器上运行它并输出了这个:
乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 一个 乙 一个 一个 一个 一个 甲
所以它在我的结尾非常可靠,运行gevent 1.0.1和python2.7。 如果它不适合你,你可能想尝试更新python或gevent。