zoukankan      html  css  js  c++  java
  • gevent常用方法

    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

  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/BBS2013/p/13471849.html
Copyright © 2011-2022 走看看