推荐学习书目
› 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
ChrisFreeMan
V2EX  ›  Python

Swift 和 LLVM 作者的新项目, 35000 倍快的升级版 Python

  •  1
     
  •   ChrisFreeMan · May 5, 2023 · 8014 views
    This topic created in 1279 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  May 5, 2023

    有人直奔评论区了,补充一下里面的内容

    • 这是一个python的super set(超集),兼容python语法。类似于TS对于JS的关系
    • 多出的关键字和数据类型为,let(常量) var(变量)struct, 和swift很相似
    • 里面提到兼容主流库,比如pandas,numpy
    • 在非类型安全的情况下(原python的无类型注释的非安全语法),只有14倍的提速
    • 在全速情况下的条件是,加入静态类型,内存管理加入ownership && borrowing (rust理念),指针操作等
    30 replies  •  2023-05-07 14:53:44 +08:00
    helloadmin
    helloadmin
    May 5, 2023❤️2
    1
    我怀疑他在吹牛逼
    luojiedev
    luojiedev
    May 5, 2023❤️1
    2
    才开始了解 Swift ,Mojo 就来了,有得玩。但愿 Mojo 会让我爱上,毕竟学过 Python 五六次,但是从来没有在生产上使用。

    官网: https://www.modular.com/mojo

    GitHub: https://github.com/modularml/mojo
    expkzb
    expkzb
    May 5, 2023
    3
    先写 python ,再让 gpt 转成 mojo 就行了吧。最大的吸引力是可以省下一个 cuda 。
    galenjiang
    galenjiang
    May 5, 2023
    4
    julia 怎么说
    fioncat
    fioncat
    May 5, 2023
    5
    35000 倍?我印象中 C 语言比 Python 也就快几倍吧。。
    InkStone
    InkStone
    May 5, 2023
    6
    @fioncat 我印象中计算密集代码有 20~30 倍左右。
    主要是 Python 的对象模型太复杂了,加法在 C 里就是一条指令,在 Python 里是一大堆的查表和函数调用。
    xooass
    xooass
    May 5, 2023
    7
    能做到 python 代码编译成 mojo 就行

    平时用 py 做脚本,需要性能的时候就去编译一下
    luojiedev
    luojiedev
    May 5, 2023
    8
    @fioncat 除非核心代码全部是 C 实现的,只是 Python 调用一下才可能快几倍,否则把纯 C 的代码用 Python 实现,可能真要差出上千倍的。
    love
    love
    May 5, 2023
    9
    @fioncat js 都比 py 快几十倍
    CaptainD
    CaptainD
    May 5, 2023
    10
    没深入了解这个语言,不过它和 py 对比速度的时候用了一个动图,py 是串行它是并行,是在多线程下吗?

    因为 GIL 在多线程里肯定性能要差的,但是 py 更多的用协程替代了多线程场景,特定场景性能差距没有想象中大,计算密集型场景 py 也并不是因为无法并行慢的
    duke807
    duke807
    May 5, 2023 via Android
    11
    没有逻辑可言

    觉得 py 慢,所以搞一个子集是 py 的 新语言

    觉得 py 慢,不是应该搞一个新的 py 解释或者翻译器吗?搞新语言进一步扩充 py 是哪门子逻辑?
    laqow
    laqow
    May 5, 2023
    12
    如果不是 python 足够慢谁敢在上面开源可能对自己形成竞争的东西
    haha512
    haha512
    May 5, 2023
    13
    重要的是能否无缝兼容第三方库,不然再快,意义也不大
    tsubin
    tsubin
    May 5, 2023
    14
    能提升几千倍 那不用说肯定是 JIT 编译+各种编译优化手段
    newshbb
    newshbb
    May 5, 2023
    15
    他们是懂写标题的
    jsq2627
    jsq2627
    PRO
    May 5, 2023 via iPhone
    16
    @duke807 慢的原因就是语言特性太复杂导致不能优化吧。所以只好砍语言
    duke807
    duke807
    May 5, 2023 via Android❤️1
    17
    @jsq2627

    对啊,然而,mojo 不是砍语言,反而是标榜自己是 python 的扩充
    ljsh093
    ljsh093
    May 5, 2023
    18
    @duke807 #17 看了下感觉像 ts 对于 js
    iOCZ
    iOCZ
    May 5, 2023
    19
    差距应该没那么大吧
    oldshensheep
    oldshensheep
    May 5, 2023❤️1
    20
    Further, we decided that the right long-term goal for Mojo is to provide a superset of Python (i.e. be compatible with existing programs) and to embrace the CPython immediately for long-tail ecosystem enablement
    How compatible is Mojo with Python really ?
    ……but… it is still very early and missing many features - so today it isn’t very compatible. Mojo doesn’t even support classes yet!
    画饼很好,看看未来的发展吧……

    https://docs.modular.com/mojo/why-mojo.html
    pengtdyd
    pengtdyd
    May 5, 2023
    21
    油管上看到一个笑死人的评价,Mojo 的人还跟评论了:
    JavaScript:无休止的框架战争。
    Python:无休止的替代战争。
    Crixs
    Crixs
    May 5, 2023
    22
    看了下主要是用了并行计算,用硬件换时间?
    iorilu
    iorilu
    May 5, 2023 via Android
    23
    有啥意义,现有得库能直接用吗
    wizardyhnr
    wizardyhnr
    May 6, 2023
    24
    挺好的,现在的 Python 版本都是顶层 Python 调用加底层 C 实现。这个整个原型可以用 Python 写,底层优化同样的语法整合度肯定方便很多。
    Marketing 也很不错,切入机器学习的热点领域,加入 CUDA 的支持。用户群体简单适应就可以很快迁移了吧。
    Python 的优化方案太杂了(Cython/mypyc/taichi/numba ),也不差这一个了。
    mayli
    mayli
    May 6, 2023 via Android
    25
    看起来核心还是数值计算和 simd/gpu, 并不是通用替代
    tywtyw2002
    tywtyw2002
    May 6, 2023 via iPhone
    26
    mojo 能编译成二进制吗?

    目前 python 一大痛点就是没法编译成二进制。

    codon 虽然说提供了 python to 二进制,但是问题也很多。
    wizardyhnr
    wizardyhnr
    May 6, 2023❤️1
    27
    看了下官网。简单来说最初的核心开发是 AI 计算,对 CUDA 等有较好的封装,为了方便客户就采用了 Python 的语法。到了这一步就要确定是做 CPython 的 DSL , 还是另外一个 Interpeter 。
    最初的设计应该和 Cython 类似,但后续受 CPython 架构的限制太大,免不了和 PyObject 和 GIL 打交道,估计内心是看不上 CPython 的实现的,确实时间太久远了,历史负担很大。
    看起来对自己 AI 计算的框架比较有信心,所以就选择走 PyPy 的路线。但是 PyPy 的教训就是没有广大的第三方库支持。它本身对 Python 基本类型的支持还不完整,属于 DSL 的状态。现在宣传就是希望多圈用户来移植第三方库。
    有第三方来倒逼一下 CPython 总是好的,到达 neovim 之于 vim 就最好了。一个 nogil 讨论了那么多年还是连个响都没有。性能需求倒逼总归是要逼出 Python4 的,官方不想做就看第三方能不能搞出来了。
    iorilu
    iorilu
    May 6, 2023
    28
    @tywtyw2002 cython 不是可以,也不费啥事
    akaHenry
    akaHenry
    May 6, 2023
    29
    我建了个 mojo 中文技术 vx 群, 加群二维码在如下链接里. 欢迎加群交流 mojo.


    https://user-images.githubusercontent.com/3252130/236625774-11005af1-0cf0-4154-908e-8094b7b3350a.png
    roundgis
    roundgis
    May 7, 2023
    30
    python 那些特别慢的部分基本都用 cython 或者 c 改写了

    剩下那 20%慢的 要看谁有心情了 或者说不值得花时间

    gil 是另外一个问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4953 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 97ms · UTC 06:18 · PVG 14:18 · LAX 22:18 · JFK 01:18
    ♥ Do have faith in what you're doing.