Twisted、gevent和eventlet - 何时使用它们

9 投票
1 回答
2413 浏览
提问于 2025-04-16 08:19

在什么情况下,像eventlet或gevent这样的东西会比twisted更好呢?虽然twisted看起来是使用最广泛的,但eventlet和gevent肯定也有一些优点……

我不是在寻找某个特定场景的答案,只是想了解一些一般性的情况。

1 个回答

10

我觉得这主要是个人审美的问题。

首先,eventlet其实可以使用Twisted来处理网络,所以从某种意义上说,这并不是一个非此即彼的问题,而是一个“这个是建立在那个基础上的”问题。

就我个人而言,我觉得像gevent或eventlet这样的库并没有必要,特别是自从Twisted引入了@inlineCallbacks这个装饰器后,它已经可以让代码看起来像是阻塞的。

不过,如果你有一大堆已经使用线程的代码,而你想把它改成事件驱动的方式,像eventlet这样的库可以帮你省去不少麻烦,因为你不需要到处插入yield。有些人,比如EVE在线游戏的开发者,认为这种风格的代码在某些方面,比如人工智能代码,确实更好。

撰写回答