Python 多进程能实现并行并突破 GIL 的限制在多个 CPU 上运行吗?一个 Python 解释器有一个 GIL 还是一个进程有一个 GIL 呢?

2017-12-05 21:49:56 +08:00
 beeeta
4221 次点击
所在节点    Python
10 条回复
wellsc
2017-12-05 21:55:50 +08:00
多进程没有 GIL 限制
misaka19000
2017-12-05 22:12:55 +08:00
一个进程一个 GIL
jimzhong
2017-12-05 22:51:49 +08:00
可以实现
jingniao
2017-12-05 22:57:28 +08:00
一个进程一个解释器一个 GIL,多进程就有多个解释器多个 GIL
ArthurMarcel
2017-12-05 23:39:45 +08:00
当然是一个进程一个 GIL 了,不然开多进程提升效率是为什么?
kunluanbudang
2017-12-05 23:46:08 +08:00
据我了解到的 Python 社区解决此类问题的套路
重 IO
1. 多线程还是可以用用的
2. 协程 /asyncio/gevent 等等
3. 多进程,每个核放一个 Python 进程
4. PyPy


重 CPU
1. 多进程
2. 关键模块用 C 重写, 规避 GIL 的限制
3. PyPy
kuro1
2017-12-06 09:29:14 +08:00
可以吃满 CPU,用 htop 看非常爽
everhythm
2017-12-06 13:24:02 +08:00
不涉及 shell 的话可以用 py 带的 multiProcess 里面的 pool 实现进程池
pool 默认是开 机器 cpu 个数的进程
beeeta
2017-12-06 17:28:45 +08:00
谢谢各位的回复!:)
wizardforcel
2018-04-04 09:26:20 +08:00
它相当于把 GIL 也复制了一份(因为是不同的 VA )。

任何锁如果复制一份都会失效的。。。

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

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

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

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

© 2021 V2EX