首页 > 代码库 > 【Python】协程实现生产者消费者模型
【Python】协程实现生产者消费者模型
协程的实现为协作式而非抢占式的,这是和进程线程的最大区别。在Python中,利用yield和send可以很容易实现协程。
首先复习下生成器。
如果一个函数使用了yield语句,那么它就是一个生成器函数。当调用这个函数时,它返回一个迭代器。当第一次调用__next__()时候,生成器函数主体开始执行,遇到yield表达式时候终止。
当使用__next__()方法时候,yield value语句返回None;当使用send(v)方法时候,yield value返回v。也就是说,__next__()方法相当于send(None)方法
1 def consumer() 2 while True: 3 line = yield #line接收的是yield这个表达式的返回值! 4 print(line.upper()) 5 6 7 def productor(): 8 with open(‘text.txt‘) as file: 9 for i, line in enumerate(file): 10 yield line 11 print("{0} lines".format(i)) 12 13 14 c = consumer() 15 c.__next__() #手动启动生成器,注意在Python3.X中不是c.next() 16 for i in productor(): 17 c.send(i)
参考资料:《改善Python程序的91个建议》建议66、67
【Python】协程实现生产者消费者模型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。