使用asyncio

asyncio

example1:

def generate():
    print("1")
    yield 2
    print("3")
    yield 4
a = generate()
print(a)

<generator object generate at 0x0000013834675AC8>

结论:
创建生成器时,里面的代码不会执行。

example2:

def generate():
    print("s1")
    yield 2
    print("s3")
    yield 4
a = generate()
print(a.send(None))
s1
2

结论:
使用send调用一次生成器,它会执行到第一个yield,并且send方法的返回值就是yield返回的值。

这个特性实现非阻塞io原理:

前提

  1. 用户知道哪些是io操作,也就是知道那个函数是io函数,比如read,send 这种
  2. 用户知道什么时候io操作结束,有结果返回
posted @ 2022-04-02 19:26  oaksharks  阅读(23)  评论(0编辑  收藏  举报