協程
乙個簡單的協程例子
快遞員送快遞(協程)# 產生n
defcountdown_gen
(n, consumer):
consumer.send(none) # 預激操作,等同於next(consumer)
while n > 0:
consumer.send(n)
n -= 1
try:
consumer.send(none) # 傳送空值,結束執行緒
except stopiteration:
pass
defcountdown_con
():while
true:
n = yeild # 消費乙個n
if n:
print('countdown', n)
sleep(1)
else:
break
defmain
(): consumer = countdown_con()
countdown_gen(10, consumer)
if __name__ == '__main__':
main()
from random import randint
from time import sleep
from day0604myutils import coroutine
# 快遞員,送出包裹
@coroutine
defcreate_delivery_man
(name, capacity=1):
buffer =
while
true:
size = 0
pkg_name = yield
print('%s正在派送%s號包裹' % (name, pkg_name))
sleep(randint(1, 3))
# 快遞中心,產生包裹
defcreate_package_center
(consumer, max_packages):
# consumer.send(none) 預啟用 next(consumer)
num = 0
while num <= max_packages:
consumer.send('%d' % num)
num += 1
if num % 10 == 0:
sleep(randint(15, 30))
defmain
(): dm = create_delivery_man('王大錘')
create_package_center(dm, 50)
if __name__ == '__main__':
main()
# 預啟用包裝器defcoroutine
(fn):
def(*args, **kwargs):
gen = fn(*args, **kwargs)
next(gen)
return gen
python爬蟲筆記 day6
mongodb mysql redis的區別和使用場景 mysql是關係型資料庫,支援事物 mongodb,redis非關係型資料庫,不支援事物 mysql,mongodb,redis的使用根據如何方便進行選擇 希望速度快的時候,選擇mongodb或者是redis 資料量過大的時候,選擇頻繁使用的資...
Python學習日記day6
字串型別及操作 知識點1 使用 m n k 根據步長對字串切片 m缺失表示至開頭,n缺失表示至結尾。k為步長,擷取的字串位置為m到n 1 知識點2 轉義符號 轉義符號後的字元為原始字元 知識點3 字串操作符 x y 連線兩個字串x和y n x 或 x n 複製n次字串x x in s 如果x是s的子...
Python學習之路 Day6
python 在執行過程中,遵循下面的基本原則 1 普通語句,直接執行 2 碰到函式,將函式體載入記憶體,並不直接執行 3 碰到類,執行類內部的普通語句,但是類的方法只載入,不執行 4 碰到if for等控制語句,按相應控制流程執行 5 碰到 break,continue等,按規定語法執行 6 碰到...