python:协程
2018-06-18 01:15:34来源:未知 阅读 ()
1,如何实现在两个函数之间的切换?
def func1(): print(l) yield print(3) yield def func2(): g =func1() next(g) print(2) next(g) print(4) func2()
2,协程
import time from greenlet import greenlet # 在单线程中切换状态的模块 def eat1(): print('吃鸡腿1') g2.switch() time.sleep(5) print('吃鸡翅2') g2.switch() def eat2(): print('吃饺子1') g1.switch() time.sleep(3) print('白切鸡') g1 = greenlet(eat1) g2 = greenlet(eat2) g1.switch()
3,gevent
from gevent import monkey;monkey.patch_all() import time # time socket urllib requests import gevent # greenlet gevent在切换程序的基础上又实现了规避IO from threading import current_thread def func1(): print(current_thread().name) print(123) time.sleep(1) print(456) def func2(): print(current_thread().name) # dummythread print('hahaha') time.sleep(1) print('10jq') g1 = gevent.spawn(func1) # 遇见他认识的io会自动切换的模块 g2 = gevent.spawn(func2) gevent.joinall([g1,g2])
4,效率对比
from gevent import monkey;monkey.patch_all() import time # time socket urllib requests import gevent # greenlet gevent在切换程序的基础上又实现了规避IO def task(args): time.sleep(1) print(args) def sync_func(): # 同步 for i in range(10): task(i) def async_func(): # 异步 g_l = [] for i in range(10): g_l.append(gevent.spawn(task,i)) # 给写成任务传参数 gevent.joinall(g_l) start = time.time() sync_func() print(time.time() - start) start = time.time() async_func() print(time.time() - start)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:武道之路-炼体期五重天巅峰
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash