Python 使用 gunicorn 多 worker 进程模式,启动 gevent 协程应用,是不是就可以利用 CPU 多核?

2021-02-16 09:49:25 +08:00
 miniyao
Python 中的协程不像 Go 那种能把协程映射到多个线程上,是严格的 1:N 关系,也就是一个线程对应了多个协程。虽然可以实现异步 I/O,但是不能有效利用多核(GIL)。

所以,如果用 gunicorn 多 worker 启动 gevent 协程应用,是不是就可以解决利用 CPU 多核的问题?
2235 次点击
所在节点    Python
5 条回复
maocat
2021-02-16 09:59:02 +08:00
我目前是这样用的
rust
2021-02-16 11:51:49 +08:00
是的
johnsona
2021-02-16 13:02:55 +08:00
多 worker 就是多进程嘛
ypw
2021-02-16 17:59:52 +08:00
是的,我测了能打满 CPU 利用率
LeeReamond
2021-02-16 18:20:37 +08:00
IO 的问题是这么解决的,程序里运算的部分可以用 c/c++嵌入的方式摆脱 GIL,所以说到这实际上我感觉 py 的性能广为被诟病的几个点事实上不存在,GIL 是一个很好的特性,让 py 这种语法的程序运行速度快了很多倍,然后顶层设计应该就是让你运算密集的时候去 ctyps,这样 gil 的影响就减轻到很微弱。然后就是最近几年慢慢补全了 IO,性能问题现在影响很微弱了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/753500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX