1
wellsc 2017-12-05 21:55:50 +08:00
多进程没有 GIL 限制
|
2
misaka19000 2017-12-05 22:12:55 +08:00
一个进程一个 GIL
|
3
jimzhong 2017-12-05 22:51:49 +08:00
可以实现
|
4
jingniao 2017-12-05 22:57:28 +08:00 via Android
一个进程一个解释器一个 GIL,多进程就有多个解释器多个 GIL
|
5
ArthurMarcel 2017-12-05 23:39:45 +08:00
当然是一个进程一个 GIL 了,不然开多进程提升效率是为什么?
|
6
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 |
7
kuro1 2017-12-06 09:29:14 +08:00
可以吃满 CPU,用 htop 看非常爽
|
8
everhythm 2017-12-06 13:24:02 +08:00
不涉及 shell 的话可以用 py 带的 multiProcess 里面的 pool 实现进程池
pool 默认是开 机器 cpu 个数的进程 |
9
beeeta OP 谢谢各位的回复!:)
|
10
wizardforcel 2018-04-04 09:26:20 +08:00
它相当于把 GIL 也复制了一份(因为是不同的 VA )。
任何锁如果复制一份都会失效的。。。 |