gevent.get_hub().loop.async()新建一个slot,这个slot可以放入一个回调函数,同时可以由另外一个OS线程通知gevent的loop engine运行这个回调函数。
新建一个slot:
gev_loop_async = gevent.get_hub().loop.async()
放入一个回调函数:
gev_loop_async.start(__callback_function__)
由另外一个OS线程通知:
gev_loop_async.send() # 可在另一个OS线程调用
销毁一个slot:
gev_loop_async.stop() # 使用完后必需显式销毁,没有自动销毁机制
注:
回调函数的运行由gevent的loop engine驱动
import gevent
def _on_async_send():
print "_on_async_send"
gev_loop_async = gevent.get_hub().loop.async()
gev_loop_async.start(_on_async_send)
gevent.sleep(0) # 启动gevent的loop engine