python的协程简单示例
来源:互联网 发布:api数据接口 编辑:程序博客网 时间:2024/06/15 03:18
import timedef consumer():r=''while True:n=yield rif not n:returnprint("[CONSUMER] Consuming %s..." % n)time.sleep(1)r='200OK'def producer(c):c.__next__()n=0while n<5:n=n+1print("[PRODUCER] Producing %s..." % n)r=c.send(n)print("[PRODUCER] Consumer return %s" % r)c.close()if __name__ == '__main__':c=consumer()producer(c)
执行结果如下:
[PRODUCER] Producing 1...
[CONSUMER] Consuming 1...
[PRODUCER] Consumer return 200OK
[PRODUCER] Producing 2...
[CONSUMER] Consuming 2...
[PRODUCER] Consumer return 200OK
[PRODUCER] Producing 3...
[CONSUMER] Consuming 3...
[PRODUCER] Consumer return 200OK
[PRODUCER] Producing 4...
[CONSUMER] Consuming 4...
[PRODUCER] Consumer return 200OK
[PRODUCER] Producing 5...
[CONSUMER] Consuming 5...
[PRODUCER] Consumer return 200OK
协程的简单描述:
同进程,线程类似,是实现多任务调度的一种方式。前两种需要在内核态进行调度,开销较大。而协程是在用户态进行协作(注意协作二字),开销较小。
最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
因为协程是一个线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。
转自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868328689835ecd883d910145dfa8227b539725e5ed000- python的协程简单示例
- python 爬虫的简单示例
- Python的一些简单示例
- 最简单的 python 多线程示例
- python log模块的简单示例
- [Python]TCP编程的简单示例
- [Python]UDP编程的简单示例
- Python(2.7.x)多线程的简单示例
- Python返回多个值的简单示例
- C#调用Python脚本的简单示例
- Python的一些简单示例(2)
- Python 正则表达式的简单使用示例
- python实现数据库查询的简单示例
- 【Python-matplotlib】subplot2grid()函数的简单示例
- python实现冒泡排序的简单示例
- Python中json的简单示例
- 用python调用HBase的简单示例
- python with 简单示例
- 模拟实现sleep函数——mysleep()
- 服务器主动断开连接异常
- JAR、WAR、EAR的使用和区别
- 【java】数组的12个最佳方法
- Codeforces 822B Crossword solving
- python的协程简单示例
- window下MySQL、PHP、Apache配置记录
- 80C51串行口
- RHEL7修改网卡名称为eth0
- 使用winHex对RDB和AOF原理进行剖析笔记(10)
- Spring4.0整合Redis实用示例
- Oracle之查询数据块、重做日志块及控制文件数据块的方法
- String 应用
- 如何在virtualbox上配置实用centos虚拟机