当 Python 默认 No GIL 后, Web 框架是不是要大洗牌了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
maocat
V2EX    程序员

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

  •  
  •   maocat 2025 年 7 月 4 日 6250 次点击
    这是一个创建于 207 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Flask, Django 这些老牌框架会焕发第二春吗
    35 条回复    2025-07-08 12:47:54 +08:00
    raycool
        1
    raycool  
       2025 年 7 月 4 日
    什么时候 nogil 会默认启用?
    sdrzlyz
        2
    sdrzlyz  
       2025 年 7 月 4 日
    感觉并不会...框架都上用了,GIL 这点东西,影响不大
    strobber16
        3
    strobber16  
       2025 年 7 月 4 日
    py4 之前都不可能默认 no gil
    iorilu
        4
    iorilu  
       2025 年 7 月 4 日
    用 async 不就行了, 有啥区别

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

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

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

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

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

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

    简单比喻:
    想象一个厨房里有多个厨师(线程),但只有一把菜刀( GIL )。无论有多少厨师,同一时间只有一位能用这把刀切菜(执行代码)。这对于需要等待烤箱预热( I/O 操作)的厨师们来说没问题,但在所有人都需要切菜( CPU 计算)时,效率就非常低了。
    xing7673
        31
    xing7673  
       2025 年 7 月 5 日
    @rogwan #28 噢你想问的是范式上的解决方案啊,那现在还需要迭代,毕竟性能上才刚刚过及格水平
    LitterGopher
        32
    LitterGopher  
       2025 年 7 月 5 日
    人得不, 因 Python 的吸引力就不是源自行速度, 所以如果某天 Python 被化不可能是因行速度太慢, 某天一天下也不是因行速度超越.
    Zy143L
        33
    Zy143L  
       2025 年 7 月 7 日
    @RangerWolf 并发都是下层的..指不定下层是 rust 实现的..例如 py 框架 Robyn 是 rust 的运行时
    sunorg
        34
    sunorg  
       2025 年 7 月 8 日
    不如用大 PHP ?
    simple025
        35
    simple2025  
       2025 年 7 月 8 日
    搞 WEB,多进程和多线程在并发不高的情况下,差距有多大呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5275 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 05:54 PVG 13:54 LAX 21:54 JFK 00:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86