我正在创建一个使用eventlet greenthreads的简单程序,我无法理解他们的行为。从以下示例中可以看出,线程仅在我调用.wait()方法时运行。我阅读了文档,但我找不到类似于" start"的方法。线程模块提供的方法。是否有任何类似的方法强制线程在创建后生成(spawn call)?
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
>>>
答案 0 :(得分:1)
TL; DR:您需要eventlet.sleep()
或等待有用的东西,通常是网络。
此合成测试需要观察到的行为。生产代码为运行其他greenthreads提供了过多的机会。换句话说:它实际上与具有实际代码的OS线程类似。
Eventlet提供cooperative multitasking。每个线程都会控制其他线程,让其他线程有机会运行。当事件通常阻塞时,Eventlet可以修补系统库。
有关详细说明,请参阅https://stackoverflow.com/a/14227272/73957。