我有两个函数接收来自两个不同连接的数据,我应该在从其中一个连接获得结果后关闭两个连接。等到几个greenlet之一完成
def first():
gevent.sleep(randint(1, 100)) # i don't know how much time it will work
return 'foo'
def second():
gevent.sleep(randint(1, 100)) # i don't know how much time it will work
return 'bar'
然后我产卵的各功能:
lst = [gevent.spawn(first), gevent.spawn(second)]
gevent.joinall
块当前greenlet直到从lst
两个2个greenlets准备。
gevent.joinall(lst) # wait much time
print lst[0].get(block=False) # -> 'foo'
print lst[1].get(block=False) # -> 'bar'
我想等到eiter第一或第二greenlet准备就绪:
i_want_such_function(lst) # returns after few seconds
print lst[0].get(block=False) # -> 'foo' because this greenlet is ready
print lst[1].get(block=False) # -> raised Timeout because this greenlet is not ready
我该怎么办呢?