You could use gevent.event.Event (or AsyncResult) and Greenlet's link() method, like this:
...
ready = gevent.event.Event()
ready.clear()
def callback():
ready.set()
lst = [gevent.spawn(first), gevent.spawn(second)]
for g in lst:
g.link(callback)
ready.wait()
...