0
我正在創建一個使用eventlet greenthreads的簡單程序,我無法理解它們的行爲。從下面的例子看來,線程只在我調用.wait()方法時運行。我閱讀文檔,找不到類似於線程模塊提供的「啓動」方法的任何方法。有沒有類似的方法來強制線程在創建之後運行(spawn call)?greenthreads不會在派生調用後運行
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import eventlet
>>> def test():
... print("this is a test")
...
>>> gth = eventlet.spawn(test)
>>>
>>> gth.wait()
this is a test
>>>
關於'spawn()'的文檔清楚地說[this](http://eventlet.net/doc/modules/greenthread.html#eventlet.greenthread.GreenThread):執行控制立即返回給調用者;創建的greenthread只是計劃在下一個可用的機會運行。「所以,不,它不會運行,因爲您在控制檯中運行它,直到您控制權爲止。在腳本中運行它,而不用'wait()',這段代碼應該工作得很好。 –
我在腳本中嘗試了相同的結果:(我只是在調用eventlet.sleep(0) – redobot
時才運行啊,我明白了,如果你自己運行它,主進程會退出綠線有機會跑(如果你這樣做,該死的,如果你不這樣做,該死的):因此所有關於綠線的信息都會消失,你可以讓主線睡覺,這就是你所做的。除此之外,你沒有任何其他選擇 –