#coding=utf-8
'''created on 2023年3月18日
@author: bh wong
''''''
協程基礎:
概念性知識:
(1)yield 生成器,包含yield 的函式,則是乙個可迭代物件
1.__next__()方法
2.send()方法
(2)生產者,消費者行為:按需提供,類似與kfc,你(消費者)點餐,店員(生產者)按照你的需求提供給你,它不可
能把一天的東西都做出來。這樣做提高效率。
流程:(1)定義帶有yield的函式,當執行到yield時,返回yield後面的東西,可以是函式之類的。當該yield函式被呼叫一次時
執行到yield後停止,下一次從yield之後開始。
涉及模組:
yield 生成器的next()方法 已經更改為__next()方法。而send()未改變。
'''def xiechengtest():
x = yield '她是蒼老師'
print('#######蒼老師分割線########',x)
x = yield '桃古繪里香,呵呵噠'
print('#######桃古繪里香分割線########',x)
x = yield
#課後習題
def demo1():
x = yield
x = yield 'x=haha'
x = yield 'y=haha'
def fab(n):
a,b=1,1
while(byield b
print(b)
a,b = b,a+b
if __name__ == '__main__':
#測試'''
t=xiechengtest()
print(t.__next__())
print(t.send('言傳身教'))
print(t.send('90後宅男女神'))
#不能在沒呼叫__next__()方法前就直接呼叫send(),因為python的generator那時候還沒有執行
#print(t.__next__())
#print(t.__next__())
'''t=demo1()
print(t.__next__())
print(t.send('haha'))
print(t.send('haha'))
#print(t.__next__())
#print(t.__next__())
for t in fab(100):
print(t)
13 爬蟲之協程
首先我們需要知道的是requests是同步的方法。而我們若想使用協程,寫的方法都盡量不是使用同步的方法。因些我們,選擇使用乙個新的模組庫 aiohttp 官網1.1 安裝pip install aiohttp1.2 快速開始import aiohttp loop.run until complete...
python eventlet協程基礎
一 協程相關 1.greenlet greenlet在import的時候為一物件,即greenlet在程式中為一單例物件。greenlet主要實現了儲存函式的棧頂和棧底 函式在堆中的位址和長度。greenlet實現了乙個類似於longjump的功能,用於在函式中執行切換。yeild實現了帶返回值的l...
Python基礎 協程
協程是一種使用者態的輕量級執行緒,本質上是單執行緒 協程擁有自己的暫存器上下文和棧。協程排程切換時,將暫存器上下文和棧儲存到其他地方,在切回來的時候,恢復先前儲存的暫存器上下文和棧。使用greenlet實現協程操作,greenlet需要手動進行切換 首先需要使用greenlet建立類似與堆疊空間,然...