标题说明了一切。使用属于gevent.Pool的方法之一在池中并行(排序)运行greenlets似乎更好,速度更快,而不是gevent.joinall()。每种方法的优缺点是什么?
发布于 2022-01-24 14:46:07
我认为关键的区别不是原始的绩效,而是绩效管理。当您使用gevent.joinall()时,您必须对一次存在多少个绿地进行自己的管理。天真的实现将创建尽可能多的请求所需的计算。
另一方面,可以很容易地将gevent.Pool配置为限制同时运行的数量,从而防止应用程序在资源不足的情况下运行。
和往常一样,这是一种权衡。您的池可能运行得更慢,因为它可能不允许像使用gevent.joinall()的简单实现那样运行更多的绿地,但是,您不太可能在资源之外运行应用程序(并导致其他错误)。
最终,你必须回答这样的问题:你会不会收到太多的请求?你有足够的资源可以利用吗?原始峰值性能比平均可靠性更重要吗?
https://stackoverflow.com/questions/70819533
复制相似问题