asyncio 模拟 http 请求,asyncio.open_connection源码问题

来源:13-6 asyncio 模拟 http 请求

慕九州4321812

2021-07-19

老师您好,

asyncio.open_connection() 源码中,调用transport, _ = yield from loop.creat_connection(…),进一步调用 self.sock_connect()

sock_connect()最后 return(yield from fut), 想问一下,fut是future对象,yield from fut最后如何被激活? yield出的值应该给到了transport, 但后边的下划线是为什么?

从源码中没有看明白,请帮忙解答一下。

写回答

1回答

bobby

2021-07-20

  1. yield form是被事件循环的loop激活的

  2. 下划线是python中的匿名变量。 说明 create_connetction返回了两个值,你只想用第一个值,第二个值不会用的时候一般为了少占用一个变量名就使用下划线代替了

0
2
bobby
回复
慕九州4321812
整个协程程序的运作都是靠loop来激活的,loop激活的过程就是不停的从epoll中获取到是哪个socket状态产生了变化,然后通过这个socket绑定的future去通过对应的方法去激活该future对应的协程继续执行
2021-07-21
共2条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程