我的python学习笔记:通常函数运行时需要使用一组输入参数,但是也可以把函数编写为一个任务,从而能处理发送给它的一系列输入。这类函数称为协程,可以使用yield语句并以表达式(yield)的形式创建协程。
def print_matches()matchtext:print ("Looking for ",matchtext)while True:line = (yield)if matchtext in line:print (line)
要使用这个函数,首先需要调用他,向前执行到第一条(yield)语句,然后使用send()给它发送数据。>>>matcher = print_matches("python")>>>matcher.next  #向前执行一条语句到(yield)语句Looking for python    #这条语句会被打印输出>>>matcher.send("Hello World")>>>matcher.send("python is so cool")python is so cool  #被打印输出>>>matcher.send("oye")>>>matcher.close() #关闭匹配函数使用send()为协程发送某个值之前,协程会暂时中止,此时,当发送某个值时,协程中的(yield)表达式会将这个值返回,接下来的语句就会处理,处理完毕后,就又会走到(yield)表达式,并且停止等待下一次的send()传值。

#description下面这个小程序就像linux中命tail -f /var/log/messages一样,当运行时可以动态的显示文本文件里的信息哦!
import time
import sys
import osdef tail(f):f.seek(0,2)   #跳转到文本文件的最后的位置while True:line = f.readline() if not line:time.sleep(0.1)continueyield line#匹配函数
def grep(lines,searchtext):for line in lines:if searchtext in line:yield line#协程
def print_match(matchtext):print('look for ',matchtext)while True:line = (yield)当执行完print语句后程序会停留在(yield)这里,直到有send('hello')语句过来时会触发程序继续运行哦!if matchtext in line:print (line)matches = [print_match('python'),print_match('love'),print_match('test')
]
for m in matches:m.__next__()#让 print('look for ',matchtext)这条语句执行完毕
www = tail(open('F:\code\mytest'))  #往这个文件里写些内容吧,只要每一行中包括python,love,test,这三个词任意一个就会将哪一行输出
 line = grep( www ,'python') for lin in line:   for m in matches:     m.send(lin)很好玩哦!

转载于:https://www.cnblogs.com/zhuweiblog/p/5164281.html

python 协程小程序(草稿有待完善)相关推荐

  1. 【2021最新版】Python 并发编程实战,用多线程、多进程、多协程加速程序运行

    [2021最新版]Python 并发编程实战,用多线程.多进程.多协程加速程序运行 视频地址:https://www.bilibili.com/video/BV1bK411A7tV/ P1 Pytho ...

  2. python gevent async_谈谈Python协程技术的演进

    原标题:谈谈Python协程技术的演进 Coding Crush Python开发工程师 主要负责岂安科技业务风险情报系统redq. 引言 1.1. 存储器山 存储器山是 Randal Bryant ...

  3. python 协程_Python 协程与 Go 协程的区别(一)

    ? "Python猫" ,一个值得加星标的公众号 花下猫语:年关将近,不知各位过得怎样?我最近有些忙,收获也挺多,以后有机会分享下.吃饭时间,追了两部剧<了不起的麦瑟尔夫人& ...

  4. python中协程与函数的区别_深入浅析python 协程与go协程的区别

    进程.线程和协程 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定义: 操作系统能够进行运算调度的最小单位.它被包含在进 ...

  5. python 协程池gevent.pool_进程池\线程池,协程,gevent

    目录 1. 进程池与线程池 2. 协程 3. gevent 4. 单线程下实现并发的套接字通信 首先写一个基于多线程的套接字 服务端: from socket import * from thread ...

  6. 简单聊聊Python协程

    往期好文推荐 学习Python不需要程基础? 0基础不用怕,从0到1轻松教你入门Python python系统学习流线图,教你一步一步学会python 成为一名做大数据开发的女程序员,并不是二狗进入大 ...

  7. python多线程调用携程,Python 协程,Python携程

    Python 协程,Python携程 协程 进程:操作系统中存在 线程:操作系统中存在 协程:是微线程 模块(greenlet) 协程不是一个真实存在的东西,是由程序员创造出来的 协程,是对一个线程分 ...

  8. 5分钟完全掌握Python协程

    1. 协程相关的概念 1.1 进程和线程 进程(Process)是应用程序启动的实例,拥有代码.数据和文件和独立的内存空间,是操作系统最小资源管理单元.每个进程下面有一个或者多个线程(Thread), ...

  9. python 协程库_python协程概念

    什么是协程 协程是单线程下的并发,又称微线程,纤程.它是实现多任务的另一种方式,只不过是比线程更小的执行单元.因为它自带CPU的上下文,这样只要在合适的时机,我们可以把一个协程切换到另一个协程.英文名 ...

最新文章

  1. ds90ub934 i2c 配置_DS90UB948-Q1:1080p 双路 FPD-Link III 解串器
  2. Jupyter Notebook 使用小记
  3. Edward Gaming, the Champion 字符串,模拟(2021.11.沈阳)
  4. 嵌入式linux系统和嵌入式android系统的区别和联系
  5. Mac下安装SBT-1.2.8
  6. STM32工作笔记0092---CAN通信基础知识介绍-M3
  7. Adblock Plus无法屏蔽CSDN右下角广告解决
  8. java虚拟机学习笔记(五)---运行时的数据区域
  9. editplus 打开大文件_CorelDRAW文件损坏的几种解决方法
  10. 用LeapFTP上传文件碰到的问题及解决办法
  11. Mac设置右键用VSCode打开文件和文件夹
  12. apple tv 开发_如何在新的Apple TV上管理存储空间
  13. 6,美国2012年总统候选人政治献金数据分析
  14. 自然码官方辅助码键位图
  15. 半年销售100万辆 关注比亚迪后300万时代
  16. mybatis的原理详解
  17. 三菱伺服e6、e7报警显示、常见报警处理
  18. sqlserver2008r2提示—应用程序的组件中发生了无法处理的异常。如果单击继续,应用程序将忽略次错误并尝试继续
  19. 运动目标检测面临的问题
  20. PS对图片进行透明化处理以及字体颜色的加深

热门文章

  1. openwrt uci
  2. 9.6 shell脚本应用3
  3. 手动同步OCS的通讯簿
  4. 【收藏】让错误的程序看得出错
  5. 蓝桥杯 ADV-13 算法提高 最小乘积(提高型)
  6. 蓝桥杯 ALGO-62 算法训练 平方计算
  7. 【数据结构】树状数组笔记
  8. epoll、mysql概念及简单操作
  9. fiddler启用过滤规则只显示想要的接口数据
  10. 为Pokémon Go而生的聊天软件GoChat,坐拥百万用户却快要破产