私は次のPythonコードを実行していgevent.joinall:上記からわかるようになぜPythonはすべてgreenlets
>>> import gevent
>>> from gevent import monkey; monkey.patch_all()
>>>
>>> def fooFn(k):
... return 'gevent_'+k
...
>>> threads = []
>>> threads.append(gevent.spawn(fooFn,'0'))
>>> threads.append(gevent.spawn(fooFn,'1'))
>>>
>>> gevent.joinall([threads[1]])
>>>
>>> print threads[1].value
gevent_1
>>> print threads[0].value
gevent_0
>>>
を、threads[0].value
がfooFn
から適切な値を得ました。つまり、threads[0]
苗字が実行されたことを意味します。
threads[1]
野菜をgevent.joinall
に渡したのはなぜですか?
実際にgevent.joinall
に渡されるグリーンレットだけが実行されるようにするにはどうすればよいですか?
'gevent.joinall()'は、完了するためにパラメータとして渡されたグリーンレットを待って、メインスレッドと結合します。私の知る限りでは、他のスレッドの実行をブロックしません。グリーンレットの実行が終了するまで、メインスレッドに終了しないように指示します。 –