gevent常用方法:
gevent.spawn() |
创建一个普通的Greenlet对象并切换 |
gevent.spawn_later(seconds=3) | 延时创建一个普通的Greenlet对象并切换 |
gevent.spawn_raw() | 创建的协程对象属于一个组 |
gevent.getcurrent() | 返回当前正在执行的greenlet |
gevent.joinall(jobs) | 将协程任务添加到事件循环,接收一个任务列表 |
gevent.wait() | 可以替代join函数等待循环结束,也可以传入协程对象列表 |
gevent.kill() | 杀死一个协程 |
gevent.killall() | 杀死一个协程列表里的所有协程 |
monkey.patch_all() | 非常重要,会自动将python的一些标准模块替换成gevent框架 |
# Greenlet对象 from gevent import Greenlet # Greenlet对象创建 job = Greenlet(target0, 3) Greenlet.spawn() # 创建一个协程并启动 Greenlet.spawn_later(seconds=3) # 延时启动 # 协程启动 job.start() # 将协程加入循环并启动协程 job.start_later(3) # 延时启动 # 等待任务完成 job.join() # 等待任务完成 job.get() # 获取协程返回的值 # 任务中断和判断任务状态 job.dead() # 判断协程是否死亡 job.kill() # 杀死正在运行的协程并唤醒其他的协程,这个协程将不会再执行,可以 job.ready() # 任务完成返回一个真值 job.successful() # 任务成功完成返回真值,否则抛出错误 # 获取属性 job.loop # 时间循环对象 job.value # 获取返回的值 # 捕捉异常 job.exception # 如果运行有错误,获取它 job.exc_info # 错误的详细信息 # 设置回调函数 job.rawlink(back) # 普通回调,将job对象作为回调函数的参数 job.unlink() # 删除回调函数 # 执行成功的回调函数 job.link_value(back) # 执行失败的回调函数 job.link_exception(back)
#gevent.Pool的特殊方法:
pool.wait_available():等待直到有一个协程有结果
pool.dd(greenlet):向进程池添加一个方法并跟踪,非阻塞
pool.discard(greenlet):停止跟踪某个协程
pool.start(greenlet):加入并启动协程
pool.join():阻塞等待结束
pool.kill():杀死所有跟踪的协程
pool.killone(greenlet):杀死一个协程
参考文章:https://blog.csdn.net/biheyu828/article/details/86593413