[問題] gevent group的奇怪現象

看板Python作者 (綠豆嘉義人)時間13年前 (2013/01/16 13:34), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
不曉得有沒有人試過gevent的group功能 我試github上的範例時 發現一個奇怪現象 我只add了一個greenlet g1,可是為什麼呼叫join的時候,卻是g1,g2,g3三個全都執行了 列印出的結果是 bar foo fizz 而不是只有bar 有人知道為什麼會這樣嗎? code如下,感謝... (version : python 2.7.3, Gevent 0.13.8 , Greenlet 0.4.0 ) import gevent from gevent.pool import Group def talk(msg): print(msg) g1 = gevent.spawn(talk, 'bar') g2 = gevent.spawn(talk, 'foo') g3 = gevent.spawn(talk, 'fizz') group = Group() group.add(g1) group.join() -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.12.151

01/16 17:10, , 1F
你直接下spawn他就會start了, 請回頭讀 Greenlet objects
01/16 17:10, 1F

01/16 20:18, , 2F
spawn開始了我知道,只是覺得怎麼只add g1結果全都一起跑.
01/16 20:18, 2F

01/16 20:19, , 3F
還是說真的只能要用時再spawn再add..就不能先spawn了@_@
01/16 20:19, 3F

01/17 18:19, , 4F
Greenlet(myfunction, 'arg1', 'arg2', kwarg1=1)
01/17 18:19, 4F

01/17 18:19, , 5F
Greenlet.spawn(myfunction, 'arg1', 'arg2', kwarg1=1)
01/17 18:19, 5F

01/17 18:19, , 6F
文件就有講的東西 http://www.gevent.org/gevent.html
01/17 18:19, 6F

01/18 17:46, , 7F
誤會了, join只讓main等g1,但沒阻止g2,g3被排程.感謝A大!
01/18 17:46, 7F
文章代碼(AID): #1GzZlEZk (Python)
文章代碼(AID): #1GzZlEZk (Python)