V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
maocat
V2EX  ›  程序员

当 Python 默认 No GIL 后, Web 框架是不是要大洗牌了

  •  
  •   maocat · 9 天前 · 5268 次点击
    Flask, Django 这些老牌框架会焕发第二春吗
    35 条回复    2025-07-08 12:47:54 +08:00
    raycool
        1
    raycool  
       9 天前
    什么时候 nogil 会默认启用?
    sdrzlyz
        2
    sdrzlyz  
       9 天前
    感觉并不会...框架都上用了,GIL 这点东西,影响不大
    strobber16
        3
    strobber16  
       9 天前
    py4 之前都不可能默认 no gil
    iorilu
        4
    iorilu  
       9 天前
    用 async 不就行了, 有啥区别

    然后一个进程不够多开几个进程服务器就是
    maocat
        5
    maocat  
    OP
       9 天前
    @iorilu #4 多进程就需要中间件共享通信了,尤其是 WebSocket 这块
    rogwan
        6
    rogwan  
       9 天前
    @maocat Py No GIL 之后,数据之间通信怎么解决的?
    twig
        7
    twig  
       9 天前
    No GIL 是啥?求您讲讲。
    twig
        8
    twig  
       9 天前
    看了一下,感觉没啥大影响吧……
    XIVN1987
        9
    XIVN1987  
       9 天前
    据说去掉 GIL 后,,python 编程会变复杂,使用难度会上升。。有多少人会接受这种代价??
    jjx
        10
    jjx  
       9 天前
    语言原生性能差, nogil 有啥用,本身就是走偏的路子
    yh7gdiaYW
        11
    yh7gdiaYW  
       9 天前   ❤️ 1
    不会,FastAPI 等新框架火起来并不只是 async 支持的好,只用同步模式也比 django 这些老古董好用
    mightybruce
        12
    mightybruce  
       9 天前
    No GIL 在很多方面不是提高性能,在不开启多线程情况下,比原来的 python 版本性能更差
    mightybruce
        13
    mightybruce  
       9 天前
    web 很多时候是使用协程而不是线程 用用 async IO 的居多
    vicalloy
        14
    vicalloy  
       9 天前
    No GIL 对单线程的场景有负面影响,预计很长一段时间都不会默认 No GIL 。
    No GIL 对 Web 框架来说没有用,本来就会起多个 Worker 。
    yuuluu
        15
    yuuluu  
       9 天前
    目前还没有默认 no gil 的时间,起码再等五年吧。
    unused
        16
    unused  
       9 天前
    生态就这样了,没有多少人在纯 Python 里跑多线程 CPU 密集任务。
    tingg
        17
    tingg  
       9 天前
    我记得你,魏斯理汉堡
    maocat
        18
    maocat  
    OP
       9 天前 via Android
    @tingg 哈哈哈哈哈,那你吃了吗,真的好吃啊
    tingg
        19
    tingg  
       9 天前
    @maocat #18 下次回西安就去吃
    RangerWolf
        20
    RangerWolf  
       9 天前
    再快还能比 go 跟 rust 快? 反正用 python 本身就不要太期望于高并发
    craftsmanship
        21
    craftsmanship  
       9 天前 via Android   ❤️ 1
    @RangerWolf 虽然我同意你的观点 且认为 Python 的主场在 AI 而不在 Web 但是楼主想讨论的大概是 Python Web 而不是 Web 所以没必要跟其它语言对比 只讨论 Python 本身就好
    rainbowhu
        22
    rainbowhu  
       9 天前
    No GIL 应该主要还是针对 AI 的场景,Web 那块感觉没什么动力去改。毕竟 No GIL 其实主要就是提高计算性能,Web 那块又不需要海量计算,可能瓶颈在 IO 更多一点。
    nolan1864
        23
    nolan1864  
       9 天前 via iPhone
    @iorilu

    gil 的问题是多线程的情况下,其实只有一个线程在工作,所以在有 gil 的情况下,多线程跟一个线程用 async 的性能一样。

    如果没有 gil ,那么多线程的就跟有 gil 的多进程一样了,还不存在进程间数据共享的问题
    xing7673
        24
    xing7673  
       9 天前
    @rogwan 线程之间的数据共享啊
    jackOff
        25
    jackOff  
       9 天前
    我希望可以彻底解放 python 画界面的多线程限制,pyside 这玩意虽然好用,但是单线程让这玩意全和业务锁一个线程里了,io 任务耗时一长比亚迪的 ui 界面直接卡死
    angrylid
        26
    angrylid  
       9 天前 via Android
    单人项目怎么爽怎么来。团队开发最好还是用静态类型且语法呆板的东西。Go 或者 Java 这种东西大行其道真有他的道理
    Rorysky
        27
    Rorysky  
       9 天前
    GIL 是进程锁, 开销极大, 没啥用

    落后太多了,安心做 ai 计算器吧
    rogwan
        28
    rogwan  
       9 天前
    @xing7673 No GIL 之后,还是用 threading.Event()、Queue 、threading.Lock() 共享数据?
    Lockroach
        29
    Lockroach  
       8 天前
    nogil 性能和内存占用还倒退了一部分,如果不专门做多线程优化的话,还是用 gil 的版本比较好
    liuguang
        30
    liuguang  
       8 天前
    @twig #7
    问了一下 ai
    GIL (Global Interpreter Lock ,全局解释器锁) 是当前标准 Python (CPython) 解释器中的一个核心机制。你可以把它想象成一个“通行证”。

    功能:在一个 Python 进程中,无论你有多少个线程,GIL 都确保同一时刻只有一个线程能够执行 Python 字节码。

    目的:GIL 的主要目的是保护 Python 内部的数据结构,简化内存管理(特别是引用计数)。它使得编写 C 语言扩展变得更容易,因为扩展的开发者不必处理复杂的多线程同步问题。

    简单比喻:
    想象一个厨房里有多个厨师(线程),但只有一把菜刀( GIL )。无论有多少厨师,同一时间只有一位能用这把刀切菜(执行代码)。这对于需要等待烤箱预热( I/O 操作)的厨师们来说没问题,但在所有人都需要切菜( CPU 计算)时,效率就非常低了。
    xing7673
        31
    xing7673  
       8 天前
    @rogwan #28 噢你想问的是范式上的解决方案啊,那现在还需要迭代,毕竟性能上才刚刚过及格水平
    LitterGopher
        32
    LitterGopher  
       8 天前
    個人覺得不會, 因爲 Python 的吸引力從來就不是源自運行速度, 所以如果某天 Python 被邊緣化不可能是因爲運行速度太慢, 某天統一天下也不會是因爲運行速度超越彙編.
    Zy143L
        33
    Zy143L  
       7 天前
    @RangerWolf 并发都是下层的..指不定下层是 rust 实现的..例如 py 框架 Robyn 是 rust 的运行时
    sunorg
        34
    sunorg  
       6 天前
    不如用大 PHP ?
    chenqh
        35
    chenqh  
       5 天前
    搞 WEB,多进程和多线程在并发不高的情况下,差距有多大呢?
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 03:24 · PVG 11:24 · LAX 20:24 · JFK 23:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.