greenthreads不会在产卵后运行

2024-03-29 12:17:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个使用eventlet greenthreads的简单程序,我无法理解它们的行为。从下面的示例中,我觉得线程只在我调用.wait()方法时运行。我阅读了文档,找不到任何类似于线程模块提供的“start”方法的方法。有没有类似的方法来强制线程在创建之后运行(spawn调用)?

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
>>> 

Tags: 模块方法文档test程序示例isthis
1条回答
网友
1楼 · 发布于 2024-03-29 12:17:56

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

观察到的行为是这个合成测试的预期。生产代码为运行其他绿色线程提供了过多的机会。换言之:它的工作原理实际上与使用真正代码的OS线程类似。在

Eventlet提供cooperative multitasking。每个线程都将控制权交给其他线程,从而使其他线程有机会运行。Eventlet可以修补系统库,以便在它们通常阻塞时生成。在

请参阅https://stackoverflow.com/a/14227272/73957以获得更详细的解释。在

相关问题 更多 >