在生成调用之后,greenthreads不会运行

时间:2017-07-25 17:32:42

标签: python multithreading eventlet

我正在创建一个使用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
>>> 

1 个答案:

答案 0 :(得分:1)

TL; DR:您需要eventlet.sleep()或等待有用的东西,通常是网络。

此合成测试需要观察到的行为。生产代码为运行其他greenthreads提供了过多的机会。换句话说:它实际上与具有实际代码的OS线程类似

Eventlet提供cooperative multitasking。每个线程都会控制其他线程,让其他线程有机会运行。当事件通常阻塞时,Eventlet可以修补系统库。

有关详细说明,请参阅https://stackoverflow.com/a/14227272/73957