使用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操作結束,有結果返回
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章