简单的例子:我需要并行地发出两个不相关的HTTP请求。最简单的方法是什么?我希望是这样的:async def do_the_job():

with aiohttp.ClientSession() as session:

coro_1 = session.get('http://httpbin.org/get')

coro_2 = session.get('http://httpbin.org/ip')

return combine_responses(await coro_1, await coro_2)

换句话说,我想启动IO操作并等待它们的结果,以便它们有效地并行运行。这可以通过asyncio.gather实现:async def do_the_job():

with aiohttp.ClientSession() as session:

coro_1 = session.get('http://example.com/get')

coro_2 = session.get('http://example.org/tp')

return combine_responses(*(await asyncio.gather(coro_1, coro_2)))

接下来,我想有一些复杂的依赖结构。我希望在具备所有先决条件时启动操作,并在需要结果时获得结果。这里帮助asyncio.ensure_future将单独的任务与单独由事件循环管理的协同路由分开:async def do_the_job():

with aiohttp.ClientSession() as session:

fut_1 = asyncio.ensure_future(session.get('http://httpbin.org/ip'))

coro_2 = session.get('http://httpbin.org/get')

coro_3 = session.post('http://httpbin.org/post', data=(await coro_2)

coro_3_result = await coro_3

return combine_responses(await fut_1, coro_3_result)

为了在逻辑流中使用协程实现并行的非阻塞IO,我必须使用asyncio.ensure_future或asyncio.gather(它实际上使用asyncio.ensure_future)?有没有一种不那么“冗长”的方式?

通常开发人员必须考虑哪些协程应该成为单独的任务并使用上述函数来获得最佳性能,这是真的吗?

在事件循环中使用没有多个任务的协同路由有意义吗?

在现实生活中,事件循环任务有多“重”?当然,它们比操作系统线程或进程“轻”。我应该在多大程度上尽可能减少此类任务的数量?

python异步io协程读文件_Python协程中的并行异步IO相关推荐

  1. python中协程的理解_python协程的理解

    一.介绍 什么是并发? 并发的本质就是切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制): 1.任务发生阻塞 2.计算任务时间过长,需要让出cpu给高 ...

  2. python并发处理同一个文件_python并发编程(并发与并行,同步和异步,阻塞与非阻塞)...

    最近在学python的网络编程,学会了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件.可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器.但 ...

  3. 用python怎么读文件_python怎么读文件

    python怎么读文件? 首先,在桌面上建立一个txt文档,在上面输入以下内容:你好. Hello. abcdefg 啊不错的风格 推荐:<Python教程> 查看文件的属性,获取文件的绝 ...

  4. python协程的作用_python 协程

    Python中的协程和生成器很相似但又稍有不同.主要区别在于: 生成器是数据的生产者 协程则是数据的消费者 首先我们先来回顾下生成器的创建过程.我们可以这样去创建一个生成器: def fib(): a ...

  5. python open可以打开什么类型文件_Python打开文件open()的注意事项

    原博文 2018-02-28 10:51 − 刚刚用open(fileName)来打开txt格式的文件,总是出现错误,总是找不到文件读取的内容,后来才发现是open()在使用过程中自动关闭了.这里介绍 ...

  6. python在windows 输入和输出文件_Python文件、目录和输入输出操作

    读取键盘的输入 Python提供了input()内置函数从标准输入读入一行文本,默认的标准输入是键盘.input可以接收一个Python表达式作为输入,并将运算结果返回,如下所示: biotest@b ...

  7. c++ 读文件_python中文件的使用

    在程序运行时,数据时保存在内存的变量里.内存中的数据在程序结束后或关机后就会消失.如果想要在下次开机运行程序时还想使用同样的数据,就需要把数据存储在不易失的存储介质中,比如硬盘.u盘.不易失存储介质上 ...

  8. python 例子生成随机数,读文件

    代码  1 #生成随机数  2 import random    #这个是注释,引入模块  3 rnd = random.randint(1,500)#生成1-500之间的随机数  4 print r ...

  9. python连接linux服务器读取txt文件_python 读取Linux服务器上的文件方法

    使用Python语句,读取Linux远端服务器上的文件打印到控制台的代码实现: 下载包:paramiko import paramiko #服务器信息,主机名(IP地址).端口号.用户名及密码 hos ...

  10. python删除指定天数前的文件_python 删除指定时间间隔之前的文件实例

    遍历指定文件夹下的文件,根据文件后缀名,获取指定类型的文件列表:根据文件列表里的文件路径,逐个获取文件属性里的"修改时间",如果"修改时间"与"系统当 ...

最新文章

  1. 旷视张祥雨:神经网络架构设计新思路
  2. Hexo创建导航页面
  3. Vaadin Flow –奇妙的鹿
  4. 测试是否支持跨域_浅谈跨域威胁与安全
  5. matlab fig生成exe,MATLAB GUI多个m文件和fig如何生成exe文件
  6. python硬件_「大神器!」硬件的AI性能测试Python库发布
  7. javalibrary 线上_《NBA2K21》MT模式线上3V3任务一览 :: 游民星空 GamerSky.com
  8. centOS下安装tomcat详解
  9. Windows系统下SSH客户端连接阿里云Linux服务器
  10. 信息学奥赛一本通1045
  11. vue3+ts封装echarts
  12. 蓝牙网络共享linux,在Linux系统上安装Blueman以通过蓝牙共享文件
  13. 现代工程制图及计算机辅助绘图答案,现代工程制图(附习题集第2版高等学校应用型特色规划教材)...
  14. CentOS6启用密钥登陆
  15. 资本资产定价模型(CAPM)与套利定价理论(API)比较
  16. 云服务器系统结构图,云服务器系统结构图
  17. 工业现场云解决方案的设计与实践
  18. Android RenRen SDK 接入教程
  19. Ubuntu16.04 安装字体教程
  20. 送5本刚刚出版的《大数据时代生存法则》

热门文章

  1. bzoj4423[AMPPZ2013]Bytehattan
  2. HoloLens开发手记 - Unity之语音输入
  3. namp - 端口扫描 主机判断 漏洞分析
  4. Des加密后传参被特殊字符(如+)截断
  5. CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
  6. 拒绝卡顿——在WPF中使用多线程更新UI
  7. Hadoop、Hbase基本命令及调优方式
  8. VS2013 update4+Cocos2d-x 3.7 Win8下安装方法及配置
  9. HTML5程序设计 SVG
  10. XML验证框架在项目中的应用