python协程

  • 参考资料
    • http://python.jobbole.com/86481/
    • http://python.jobbole.com/87310/
    • http://segmentfault.com/a/1190000009781688
  • 迭代器
    • 可迭代(Iterable):直接作用于for循环的变量
    • 迭代器(Iterator):不但可以作用于for循环,还可以被next调用
    • list是典型的可迭代对象,但不是迭代器
    • 判断:isinstance()
    • iterable和iterator之间转换:iter()
  • 生成器
    • generator:一边循环以便计算下一个元素的算法
    • 需要满足三个条件:
      • 每次调用都生产出for循环需要的下一个元素
      • 如果达到最后一个,爆出StopIteration异常
      • 可以被next函数调用
    • 如何生成生成器:
      • 直接使用
        L = [xx for x in range(5)] # 放在中括号中是列表生成器
        L = (x
        x for x in range(5)) # 放在小括号中是生成器
      • 如果函数中包含yield,则这个函数叫生成器
        next调用函数,遇到yield返回

协程

  • 历史进程
    • 3.4引进协程,用yield实现
    • 3.5引入协程语法
    • 实现协程比较好的包:asyncio,tornado,gevent
  • 从技术角度讲,协程就是一个可以暂停执行的函数。也可以理解成生成器
  • 协程实现:
    • yield返回
    • send调用
  • 协程四个状态
  • 协程终止
    • 协程中未处理的异常会向上冒泡,传给next函数,或send方法的调用方(即触发
      协程的对象)
    • 终止协程:发送某个哨符值,让协程退出,内置的None和Ellipsis等敞亮经常用作哨符值==
  • yield from
    • 调用协程为了得到返回值,协程必须正常终止
    • 生成器正常终止会发出StopIteration异常,异常对象的value属性保存返回值
    • yield from从内部捕获StopIteration异常
    • 委派生成器
      • 包含yield from表达式的生成器函数
      • 委派生成器在yield from表达式处暂停,调用方可以直接吧数据发给子生成器
      • 子生成器再把阐述的值发给调用方
      • 子生成器在最后,解释器会抛出StopIteration,并且把返回值附加到异常对象上
      • asyncio
        • python3.4开始引入标准库中,内置对异步io的支持
        • 本身是一个消息循环
        • 步骤:
          • 创建消息循环
          • 把协程导入
          • 关闭
      • async and await
        • python3.5引入
        • 让协程代码更简洁
        • 使用上可以简单进行替换
          • 用async替换@asyncio.coroutine
          • 用await替换yield from
      • aiohttp
        • 在服务器端乐意asyncio + coroutine配合,因为http是io操作
        • asyncio实现了tcp,udp,ssl等协议
        • aiohttp是给予asyncio实现的http框架
        • pip install aiohttp安装
      • concurrent.futures
        • python3新增库
        • 类似其他语言的线程池概念
        • 利用multiprocessiong实现正真的并行计算
        • 核心原理
      • future
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值