最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python中的协程(协同程序)

来源:动视网 责编:小采 时间:2020-11-27 14:26:58
文档

python中的协程(协同程序)

python中的协程(协同程序):协程:将函数编写为一个能处理输入参数的任务使用yield语句并以表达式yield的形式创建协程#匹配器案例:def print_info(data): print('Looking for',data); while True: line = (yield) if data in line: pri
推荐度:
导读python中的协程(协同程序):协程:将函数编写为一个能处理输入参数的任务使用yield语句并以表达式yield的形式创建协程#匹配器案例:def print_info(data): print('Looking for',data); while True: line = (yield) if data in line: pri


协程:将函数编写为一个能处理输入参数的任务
使用yield语句并以表达式yield的形式创建协程
#匹配器案例:

def print_info(data): 
 print('Looking for',data); 
 while True: 
 line = (yield) 
 if data in line: 
 print(line);

上面这个函数 就是一个协程程序 要使用这个函数 首先需用调用它 并且 向前执行到第一条yield语句

info = print_info('python'); 
info.__next__(); #向前执行第一条yield语句

输出结果:
Looking for python

然后使用send方法发送数据给协同程序进行处理

info.send('Hell world'); 
info.send('this is python'); 
info.send('python goods');

如果 发送的数据中含有data参数值 则匹配成功 返回该条数据
输出结果:
Looking for python
this is python
python goods
send()为协程发送值时 程序处于暂时中止状态 当发送值后 yield表达式将返回这个值,后面的程序对返回值进行处理 直到遇到下一个表达式 结束 这个过程将持续运行直到协程函数返回或者调用close方法
基于一部分程序生成的数据会被程序的另一部分使用(生产者-使用者模式)
编写并发程序时,协程作用很明显 他代表数据的一个使用者

info =[ 
 print_info('python'), 
 print_info('hello'), 
 print_info('chunrui') 
]

通过调用__next__()准备所有的匹配器

for n in info: 
 n.__next__();

定义一个函数获取文件中每列数据并且传递给生成器

def tail(f): 
 for line in f : 
 if not line: 
 time.sleep(0.1); 
 continue; #如果不存在 则推迟0.1s 进行下一次 
 yield line; 
myList = tail(open('E:/work.txt'))

循环myList中的值 然后send给协程程序

for m in myList: 
 for n in info: 
 n.send(m);

输出结果:

Looking for python
Looking for hello
Looking for chunrui
python is conputer language
chunrui is name
hello world is the first case
I like to use python
my name is chunrui

总结:
1,协程:协同程序 能处理输入的参数的任务函数 当协程暂停时 我们从其中获取到返回值 当调用回到程序中时 能够传入额外或者新的参数 仍然能够从上次离开的地方继续

2,使用send函数为协程发送参数

文档

python中的协程(协同程序)

python中的协程(协同程序):协程:将函数编写为一个能处理输入参数的任务使用yield语句并以表达式yield的形式创建协程#匹配器案例:def print_info(data): print('Looking for',data); while True: line = (yield) if data in line: pri
推荐度:
标签: 程序 python 协程
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top