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

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如何存储图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值