V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
beeeta
V2EX  ›  Python

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

  •  
  •   beeeta · 2017-12-05 21:49:56 +08:00 · 4077 次点击
    这是一个创建于 2327 天前的主题,其中的信息可能已经有所发展或是发生改变。
    10 条回复    2018-04-04 09:26:20 +08:00
    wellsc
        1
    wellsc  
       2017-12-05 21:55:50 +08:00
    多进程没有 GIL 限制
    misaka19000
        2
    misaka19000  
       2017-12-05 22:12:55 +08:00
    一个进程一个 GIL
    jimzhong
        3
    jimzhong  
       2017-12-05 22:51:49 +08:00
    可以实现
    jingniao
        4
    jingniao  
       2017-12-05 22:57:28 +08:00 via Android
    一个进程一个解释器一个 GIL,多进程就有多个解释器多个 GIL
    ArthurMarcel
        5
    ArthurMarcel  
       2017-12-05 23:39:45 +08:00
    当然是一个进程一个 GIL 了,不然开多进程提升效率是为什么?
    kunluanbudang
        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
    kuro1
        7
    kuro1  
       2017-12-06 09:29:14 +08:00
    可以吃满 CPU,用 htop 看非常爽
    everhythm
        8
    everhythm  
       2017-12-06 13:24:02 +08:00
    不涉及 shell 的话可以用 py 带的 multiProcess 里面的 pool 实现进程池
    pool 默认是开 机器 cpu 个数的进程
    beeeta
        9
    beeeta  
    OP
       2017-12-06 17:28:45 +08:00
    谢谢各位的回复!:)
    wizardforcel
        10
    wizardforcel  
       2018-04-04 09:26:20 +08:00
    它相当于把 GIL 也复制了一份(因为是不同的 VA )。

    任何锁如果复制一份都会失效的。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2867 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:32 · PVG 22:32 · LAX 07:32 · JFK 10:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.