[python]yield使用的最佳实践[3]

举报
~大鱼~ 发表于 2021/05/27 15:18:04 2021/05/27
【摘要】 从数据处理到并发编程 协程和生成器的关系 你可以合理的编写一些组件来连接协程和生成器 你可以自己做一个数据流,工作流的方式来处理这种场景下的数据 你可以自己编写一个事件驱动系统 一个常见的主题 将数据交由协程处理 将数据交由线程处理(通过queue) 将数据交由进程处理(通过消息) 线程和协程共同处理 # -*- coding: utf-8 -*- fro...

从数据处理到并发编程

  • 协程和生成器的关系
  • 你可以合理的编写一些组件来连接协程和生成器
  • 你可以自己做一个数据流,工作流的方式来处理这种场景下的数据
  • 你可以自己编写一个事件驱动系统

一个常见的主题

  • 将数据交由协程处理
  • 将数据交由线程处理(通过queue)
  • 将数据交由进程处理(通过消息)

线程和协程共同处理

输出结果

我们首先实例化一个协程,并在func里面启动线程处理,并且不停的往message 里面写入要处理的数据,协程接收数据,线程处理数据

反思分析

  • 我们不是写的while true的形式吗?为什么程序会自己结束?
  • 如果不想结束,应该怎么写

我们知道,函数自己有一个结束的标志位,当整个的函数运行完时,会自己触发退出时,这样会默认的给里面的协程发送GeneratorExit,如果我们换成这种写法,不去定义一个do_thread的函数

当前的运行时就会一直存在,那如何退出呢,简单

拓展与环境

  • 通过协程,你可以很轻松的将各个任务的执行切换到线程,进程或者其它的环境之内
  • 协程可以直接当作执行环境

文章来源: brucedone.com,作者:大鱼的鱼塘,版权归原作者所有,如需转载,请联系作者。

原文链接:brucedone.com/archives/1047

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。