博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python协程
阅读量:5976 次
发布时间:2019-06-20

本文共 1314 字,大约阅读时间需要 4 分钟。

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import gevent 4 from gevent import monkey;monkey.patch_all() 5 import requests 6  7 def f(url): 8     print('GET:%s'% url) 9     res = requests.get(url)10     data= res.text11     print(url,len(data))12 13 gevent.joinall(14     [gevent.spawn(f,'http://www.baidu.com'),15      gevent.spawn(f, 'http://www.qq.com'),16     gevent.spawn(f,'http://www.58.com'),17     gevent.spawn(f,'http://www.python.org'),18      ]19 )20 21 '''22 def foo():23     print('run foo.....')24     gevent.sleep(2)25     print('switch to foo.....')26 27 def bar():28     print('run bar.....')29     gevent.sleep(3)30     print('switch to bar.....')31 32 gevent.joinall([33     gevent.spawn(foo),34     gevent.spawn(bar)])35 '''

 生产者消费者模型

#!/usr/bin/env python# -*- coding:utf-8 -*-def consumer():    last = ''    while True:        receival = yield last        if receival is not None:            print('Consume %s' % receival)            last = receivaldef producer(gen, n):    gen.__next__()    x = 0    while x < n:        x += 1        print('Produce %s' % x)        last = gen.send(x)    gen.close()gen = consumer()producer(gen, 5)

 消费者consumer()函数是一个生成器函数,每次执行到yield时即挂起,并返回上一次的结果给生产者。生产者producer()接收到生成器的返回,并生成一个新的值,通过send()方法发送给消费者。

转载于:https://www.cnblogs.com/Erick-L/p/6504942.html

你可能感兴趣的文章
百度举办第七届技术开放日,揭秘春晚红包技术支撑
查看>>
Oracle宣布提供新的Java支持价格体系
查看>>
广发银行运维实践分享:Docker适配传统运维那些事
查看>>
EF Core数据库Provider一览
查看>>
Kafka团队修改KSQL开源许可,怒怼云厂商
查看>>
苹果在GitHub上正式开源iOS内核源码
查看>>
测试人员面临的测试挑战和必备技能
查看>>
使用Flutter之后,我们的CPU占用率降了50%
查看>>
同事反馈环:为什么度量和会议还不够充分
查看>>
[转]十问 Linux 虚拟内存管理 (glibc)
查看>>
老司机带你深入浅出 Collection
查看>>
JavaScript属性操作
查看>>
查询系统-vba
查看>>
[译]Spring Session 与 Spring Security
查看>>
运行期优化
查看>>
安卓应用安全指南 4.4.3 创建/使用服务高级话题
查看>>
520戏精上身!纸短情长,一句顶一万句的花式告白语抱走不谢!
查看>>
[C#-SQLite] SQLite一些奇怪的问题
查看>>
在WinDBG中查看调用栈的命令
查看>>
2017中国互联网消费生态大数据报告
查看>>