python生成器並行

2021-10-03 01:21:23 字數 1882 閱讀 5552

#生成器並行

import time

defconsumer

(name)

:print

("%s 準備吃包子啦!"

%name)

while

true

: baozi =

yield

print

("包子[%s]來了,被[%s]吃了!"

%(baozi,name)

)c = consumer(

"abc"

)c.__next__(

)# b1= "韭菜餡"

# c.send(b1)#send可以往yield裡傳值

# c.__next__()

defproducer

(name)

: c = consumer(

'a')

c2 = consumer(

'b')

c.__next__(

) c2.__next__(

)print

("老子開始準備做包子啦!"

)for i in

range(10

):time.sleep(1)

print

("做了1個包子,分兩半!"

) c.send(i)

c2.send(i)

producer(

"alex"

)'''

from collections import iterable

isinstance(,iterable)#判斷乙個物件是否是迭代物件.

#迭代物件可以通過iter()轉為迭代器

from collections inport iterator

isinstance((x for x in range(5)),iterator)#判斷乙個物件是否是迭代器.

'''

abc 準備吃包子啦!

a 準備吃包子啦!

b 準備吃包子啦!

老子開始準備做包子啦!

做了1個包子,分兩半!

包子[0

]來了,被[a]吃了!

包子[0

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[1

]來了,被[a]吃了!

包子[1

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[2

]來了,被[a]吃了!

包子[2

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[3

]來了,被[a]吃了!

包子[3

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[4

]來了,被[a]吃了!

包子[4

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[5

]來了,被[a]吃了!

包子[5

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[6

]來了,被[a]吃了!

包子[6

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[7

]來了,被[a]吃了!

包子[7

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[8

]來了,被[a]吃了!

包子[8

]來了,被[b]吃了!

做了1個包子,分兩半!

包子[9

]來了,被[a]吃了!

包子[9

]來了,被[b]吃了!

生成器並行

生成器的作用的在單執行緒下實現並行,稱為攜程,比執行緒更小的單位,依附於執行緒 def customer name print s準備吃包子了 name while true baozi yield 生成器 print s吃了 s包子 name,baozi def producer c1 custo...

python生成器並行例項

生成器並行例項 send傳送值被yield接受到賦值給baozi變數 yield作用只是在這裡儲存這個值的當前狀態然後返回之後在呼叫next,又回到yield 單純呼叫next不會給yield傳值,next只是在呼叫yield,send是呼叫yield並且傳值 import time 協程def c...

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...