超时调用 gevent.sleep
Call gevent.sleep with timeout
我基本上希望 gevent.sleep
表现得像 time.sleep
,因为它 returns 在 恰好 之后执行(而不是 至少 ) 一些秒数,但同时允许其他 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
是否有更好的方法来获得所需的行为?
您的代码非常好。我 运行 它在我的 linux 机器上并且有这个输出:
乙
一种
一种
一种
一种
一种
乙
一种
一种
一种
一种
一种
乙
一种
一种
一种
一种
一种
乙
一种
一种
一种
一种
一种
乙
一种
一种
一种
一种
一种
乙
一种
一种
一种
一种
一个
所以它在我这边工作得非常可靠,运行 gevent 1.0.1 和 python2.7。
如果它对你不起作用,你可能想尝试更新 python 或 gevent.
我基本上希望 gevent.sleep
表现得像 time.sleep
,因为它 returns 在 恰好 之后执行(而不是 至少 ) 一些秒数,但同时允许其他 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
是否有更好的方法来获得所需的行为?
您的代码非常好。我 运行 它在我的 linux 机器上并且有这个输出:
乙 一种 一种 一种 一种 一种 乙 一种 一种 一种 一种 一种 乙 一种 一种 一种 一种 一种 乙 一种 一种 一种 一种 一种 乙 一种 一种 一种 一种 一种 乙 一种 一种 一种 一种 一个
所以它在我这边工作得非常可靠,运行 gevent 1.0.1 和 python2.7。 如果它对你不起作用,你可能想尝试更新 python 或 gevent.