一、  asyncio

1.python3.4开始引入标准库之中,内置对异步io的支持

2.asyncio本身是一个消息循环

3.步骤:

(1)创建消息循环

(2)把协程导入

(3)关闭

4.举例:

importthreading#引入异步io包

importasyncio#使用协程

@asyncio.coroutinedefhello():print("Hello World!(%s)"%threading.current_thread())print("Start......(%s)"%threading.current_thread())yield from asyncio.sleep(5)print("Done.....(%s)"%threading.current_thread())print("Hello again!(%s)"%threading.current_thread())#启动消息循环

loop=asyncio.get_event_loop()#定义任务

tasks=[hello(),hello()]#asyncio使用wait等待task执行完毕

loop.run_until_complete(asyncio.wait(tasks))#关闭消息循环

loop.close()

二、asyncio and await

1.为了更好的表示异步io

2.python3.5引入

3.让协程代码更加简洁

4.使用上,可以简单的进行替换

(1)用async来替换@asyncio,coroutine

(2)用await来替换yield from

按照上面这个语法可以来改写前面的例子,运行结果是完全一致的

三、aiohttp

1.asyncio实现单线程的并发io,在客户端用处不大

2.在服务端可以asyncio+coroutine配合,因为http是io操作

3.asyncio实现了tcp,udp,ssl等协议

4.aiohttp是基于asyncio实现的http框架

5.例子:

importasynciofrom aiohttp importweb

asyncdefindex(request):

await asyncio.sleep(0.5)return web.Response(body=b"

Index

")

asyncdefhello(request):

await asyncio.sleep(0.5)

text= "

hello,%s!

"%request.match_info["name"]return web.Response(body=text.encode("utf-8"))

asyncdefinit(loop):

app= web.Application(loop=loop)

app.router.add_route("GET","/",index)

app.router.add_route("GET","/hellp/{name}",hello)

srv= await loop.create_server(app.make_handler(),"127.0.0.1",8000)print("Server started at http://127.0.0.1:8000...")returnsrv

loop=asyncio.get_event_loop()

loop.run_until_complete(init(loop))

loop.run_forever()

三、current,futures

1. python3新增的库

2.类似其它语言的线程池的概念

3.利用multiprocessing实现真正的并行计算(当然要求我们的CPU是多核的)

4.核心原理:以子进程的形式,实现多个python解释器

从而令python程序,可以利用多核CPU来提升执行速度。由于子进程于主解释器相分离,所以他们的全局解释器锁也是相互独立的,每个子进程都能完整的使用一个CPU内核

5.concurrent.futures.Executor

(1)ThreadPoolExecutor

(2)ProcessPoolExecutor

(3)执行的时候需要自行选择

(4)submit(fn,args,kwargs)

fn:异步执行的函数

args,kwargs参数

importtimefrom concurrent.futures importThreadPoolExecutor

​defreturn_future(msg):

time.sleep(3)returnmsg

​#创建一个线程池

pool= ThreadPoolExecutor(max_workers = 2)#参数是2,代表里面有两个线程干活

#往线程池里面加入两个task

f1= pool.submit(return_future,"hello")

f2= pool.submit(return_future,"world")

time.sleep(1)#等待执行完毕

print(f1.done())

time.sleep(3)print(f2.done())#结果

print(f1.result())print(f2.result())

五、源码

d28_1_asynchronization_examples.py

https://github.com/ruigege66/Python_learning/blob/master/d28_1_asynchronization_examples.py

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

python异步协程库_Python连载42-异步协程函数相关推荐

  1. python协程库_python中协程的详解(附示例)

    本篇文章给大家带来的内容是关于python中协程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程,又称微线程,纤程.英文名Coroutine 协程看上去也是子程序 ...

  2. python调用c++动态库_Python调用C/C++动态链接库的方法

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef E ...

  3. python图形界面编程库_Python支持哪些图形界面的第三方库

    Python支持哪些图形界面的第三方库 发布时间:2020-11-09 10:37:56 来源:亿速云 阅读:58 作者:小新 这篇文章给大家分享的是有关Python支持哪些图形界面的第三方库的内容. ...

  4. python怎样快速下载库_Python如何急速下载第三方库详解

    前言 pip 是一个现代的,通用的 Python 包管理工具 ,是一个安装第三方 库必备的工具,提供了对Python 包的查找.下载.安装.卸载的功能.但是在国内使用有很多因素的限制,一个3.4M的库 ...

  5. python 股票分析常用库_Python数据分析常用库有哪些?Python学习!

    Python为什么受欢迎?因为Python简单.易懂.好用,是一门高级的编程语言;除此之外,Python提供了大量的第三方库,开箱即用,方便.免费,非常适合从事数据分析领域的工作. 大家也都知道,Py ...

  6. python调用matlab工具库_Python第三方常用工具、库、框架等

    Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋 ...

  7. python怎么导入pandas库_Python之2-Pandas数据导入导出

    Pandas可以读取与存取像CSV\EXCEL\JSON\HTML\SQL数据库等格式的资料,具体如下: 一:从excel中读取数据并另存一张表 #读取excel中的数据 bill=pd.read_e ...

  8. python怎么导入math库_python怎么导入math库?

    Python语言是通过区分类库的方式来划分功能.用户根据自身的需要加载合适的类库,来完成需要的功能.那么如何导入加载类库?下面本篇文章就来给大家以内置类库math为例,介绍加载内置类库的方法,希望对大 ...

  9. python怎么导入math库_Python math数学库的用法

    对于基本的加.减.乘.除等运算,不用引入任何库就可以完成.但是如果要进行求正弦值.求平方根等运算,便需要使用数学库 math. math 库通过下面语句引入: import math 该库包含常用的常 ...

最新文章

  1. 洛谷 1608 路径统计
  2. 查看Linux 下某个程序的内存情况
  3. 遥想当年年纪小,追风逐浪没烦恼
  4. Lucene分析过程指南
  5. 2019matlab中的floyd,基于matlab的floyd算法详解
  6. 华为出售荣耀为不实消息,赵明曾在内部否认;迅雷前CEO陈磊涉嫌职务侵占罪被调查 ;Python 3.9发布|极客头条...
  7. 学习笔记 ---- 设计模式之观察者模式
  8. 快速开发框架介绍-懂你的RUOYI
  9. Mastering The Mix Total Bundle 2021 Mac - 混音插件合集
  10. JDBC-Web抽取公共的增删改方法
  11. 苹果 服务通知 V2
  12. 【易语言助手插件】IDE 鼠标手势1.2 原汁原味移植浏览器手势
  13. 谁动了我的奶酪之奶酪墙上的话。
  14. 十进制整数,转换成八进制和十六进制数并输出。
  15. 超融合和服务器关系_超融合服务器和超融合一体机有什么区别
  16. 【ProjectEuler】ProjectEuler_046
  17. 你都用 Python 来做什么 学Python能做什么
  18. C++处理 中英字混合截断乱码[中码GBK,英码ASCII]
  19. Android 13 适配指南~
  20. linux 内核学习11-内核模块参数

热门文章

  1. 纪录片《永远》,美让我们永得安慰!
  2. 每日漏洞 | Host头攻击
  3. 健康是能看得到的 净水器也要选智能款
  4. 文件路径前加“/”是什么意思
  5. ECCV2022 | FPN错位对齐,实现高效半监督目标检测 (PseCo)
  6. CDH6.2.0部署
  7. java aes256 加密_JAVA中使用AES256加密
  8. tr069实战报文之Inform报文
  9. EduCoder js学习手册15 答案
  10. IDEA2021.2 JRebel CPU占用高