python协程练习部分代码的理解?

import asyncio

import threading

async def wget(host):

print('wget {}'.format(host))

reader, writer = await asyncio.open_connection(host,80)

header = 'GET / HTTP/1.0\r\nHost: {}\r\n\r\n'.format(host)

writer.write(header.encode('utf-8'))

await writer.drain() #?

while 1:

line = await reader.readline()

if line == b'\r\n':

break

print('{} header > {}'.format(host,line.decode('utf-8').rstrip()))

writer.close()

loop = asyncio.get_event_loop()

tasks = [wget(host) for host in ['www.sina.com.cn','www.sohu.com','www.163.com']]

loop.run_until_complete(asyncio.wait(tasks))

loop.close()

# print(help(asyncio.open_connection))

问题1:遇到await处,把控制权交给指定的协程,但如何知道这个协程什么时候能执行完成并返还控制权呢?

问题2:drain这个协程作用貌似刷新写入的缓冲区,那这个wirte具体把‘请求头数据’写入到了哪里呢?

问题3:b'\r\n'处,为什么能够判断分离header和body数据,返回header的每一行都有换行啊,这样难道不会在打印第一条header信息后就会被break了?

才学习协程感觉代码好难理解,如果能画一张简易流程图,不胜感激啊。

相关阅读:

easyui的表格实现

angular 再通过 load 载入的页面 入口模块无法识别?

如何让子函数的传给父函数

给已有的表中添加一个自增的主键报错,麻烦大神看看~~~

树莓派网络不稳定

有什么方法能利用php监控文件夹内的文件的变化

php 中 图片如何输出多尺寸

python在向post数据时出现httplib.BadStatusLine: ''错误

NSMutableAttributedString 调解某几个字的高度用什么方法?

怎么看待网络认证?从CCNA到CCNP,为什么知识可以这样量化标准?

请问一个vagrant 端口转发问题

office2013切换中, 风和威望的效果是怎么实现的

使用UI Automation JavaScript 时怎么在工程中自定义alert.label?

hexo搭建博客部署到github pages 同时能不能一块部署到coding pages?

nginx拒绝访问

sql查询速度问题

node.js 在Windows平台怎么隐藏控制台的窗口界面

symfony怎么自定义公共函数,并且在模板中怎么调用?

localStorage如何在不同的webView之间传值

iOS如何存储图片

python 协程 php,python3.x,协程_python协程练习部分代码的理解?,python3.x,协程,asyncio - phpStudy...相关推荐

  1. 用python写web网页实现音乐数据库查询_Python tornado用40行代码搭建数据库交互网页实现快速全栈开发...

    作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点 优点是: 开发效率 快速建模,最快十分钟就可以建模 数据传播 便于传播,发文件就是发模型 交互友好 对使用者门槛低 ...

  2. python循环输出花式图案锁屏教程_Python仅用3行代码就能输出花式字符串图集,同事直呼666!...

    高逼格的日志 相信Java程序员看到上面的图,一定不会陌生.没错,springboot的启动日志.不知道其他人怎么想,我第一次看到这个启动日志的时候,就觉得好炫酷.然而,大家在日常的Python开发中 ...

  3. python怎么定义一个变量为空列表_python – 为什么一个类变量没有在列表理解中定义,但另一个是?...

    数据是列表理解的根源;它是传递给已创建的嵌套作用域的一个参数. 列表解析中的所有内容都在单独的范围内运行(作为一个函数,基本上),除了用于最左边for循环的iterable之外.你可以在字节码中看到这 ...

  4. python 协程爬虫_Python爬虫进阶教程(二):线程、协程

    简介 线程 线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID.程序计数器.寄存器集合和堆栈共同组成.线程的引入减小了程序并发执行时的开销,提高了操作系统的并发 ...

  5. 深入理解lua的协程coroutine

    1. 概述 lua协程和多线程 相同之处:拥有自己独立的桟.局部变量和PC计数器,同时又与其他协程共享全局变量和其他大部分东西 不同之处:一个多线程程序可以同时运行几个线程(并发执行.抢占),而协程却 ...

  6. 【Kotlin 协程】Flow 异步流 ⑤ ( 流的上下文 | 上下文保存 | 查看流发射和收集的协程 | 不能在不同协程中执行流的发射和收集操作 | 修改流发射的协程上下文 | flowOn函数 )

    文章目录 一.流的上下文 1.上下文保存 2.流收集函数原型 3.流发射函数原型 4.代码示例 - 查看流发射和收集的协程 5.代码示例 - 不能在不同协程中执行相同流的发射和收集操作 二.修改流发射 ...

  7. 在python中查看关键字需要在python解释器中执行_现有代码 d={},在Python3解释器中执行 d[([1,2])] = 'b'得到的结果为( )。...

    [单选题]下列字符中对应ASCII码数值最小的是哪个选项?( ) [单选题]Python解释器执行'{0},{2},{1}'.format('a','b','c')的结果为( ). [单选题]Pyth ...

  8. 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次

    子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序. package Demo4; public class ThreadTe ...

  9. Java多线程面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次

    近在学习多线程,特贴在这里,并附上自己所作答案(参考与张孝祥老师的方法). 题目如下: 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50 ...

最新文章

  1. 2018年最后几天学什么?给你关注度最高的10篇文章
  2. 友盟2015年Q2、Q3中国移动互联网趋势报告
  3. [骨科手术导航]2D/3D医学图像配准研究_罗博博_南方科技大学
  4. 高新面试系列 性格篇
  5. jquery js 兄弟父元素的获取
  6. Mysql函数Last_insert_id()的真正含义
  7. PHP编译configure时常见错误(转)
  8. “我们的边缘计算技术点,可能超前了业界一点”
  9. Educational Codeforces Round 54 (Rated for Div. 2): E. Vasya and a Tree(DFS+差分)
  10. MySQL免安装版配置部署
  11. 为什要学习烹饪?学习烹饪迫在眉睫
  12. mysql 添加字段和修改字段
  13. 网络安全等级保护定级备案
  14. PTA 7-18(查找) 新浪微博热门话题(30 分) 30分代码 (已更新)
  15. Java 按照拼音首字母排序
  16. 将windows里的内容直接复制粘贴到ubuntu,提高效率
  17. 安卓app32位升级64位框架
  18. taobao wap session
  19. java基础-1 基础知识
  20. php面向对象有什么用

热门文章

  1. couchbase java 手册_couchbase的使用 java
  2. mybatis逆向工程generatorConfiguration详细配置
  3. php json_encode小数精度丢失的问题
  4. dijkstra堆优化(multiset实现-大大减小代码量)
  5. ueditor上传图片尺寸过大导致显示难看的解决办法
  6. jsp页面 如何通过el表达式获取request属性值
  7. Jquery全选单选功能
  8. Spring+Hiberate 多数据源的网文整理
  9. ANSI C标准预定义宏
  10. BitmapFactory.Options详解