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
ClericPy
V2EX  ›  Python

没人讨论下最近热门的 Codon 和 socketify.py

  •  
  •   ClericPy ·
    ClericPy · 174 天前 · 4047 次点击
    这是一个创建于 174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/exaloop/codon

    https://github.com/cirospaciari/socketify.py

    前者机器之心推文提到百倍提速的 Python 编译器(有点像上次那个太极 taichi), 后者高性能网络编程库. 这俩的 Benchmark 真猛

    最近几个月折腾 asyncio 处理 TCP, 协程真是舒服

    PS: 现在讨论 Python 的越来越少了, 都转别的了么

    18 条回复    2022-12-18 09:14:40 +08:00
    janxin
        1
    janxin  
       174 天前
    前者应该是很多人尝试做过的道路

    后者用的 hpy 看上去有点意思。

    不过现在更看重效率、可靠性和可拓展性了,效率太高,我也没那么多用户啊
    ClericPy
        2
    ClericPy  
    OP
       174 天前
    @janxin

    以前直接上 pypy3, 确实明显提速, 不过跟不上官方大版本, 暂时没继续用, 当绿色版解释器挺好. pyston 之类的就没继续试

    后来试了 nuitka 感觉函数有些提速, 但是协程啥的反而性能损失了一小半

    后来又试了 3.11, 比 3.8 快的确实明显, 程序启动和几个缓存的设计都挺有意思的

    后来看到 taichi, 试了下, 至少我的代码没啥明显变化, 貌似还有些限制... 今天机器之心推送看到 codon, 去官网看又是 gpu 加速又是一些前提条件的, 暂时只敢观望, 也没见到有人聊聊到底咋样

    后来周报里看到 socketify, 还在观望, TCP 上对 Python 来说性能一直不是问题, 协程+reuse_port 足够用了, 不知道这库有什么前景没有, 毕竟被好几个 "考试大师" 类的 web 库坑过好几次了

    hpy 很早以前见到了, 一直没尝试, 有啥意思啊?

    确实, 代码写到一定阶段发现, 性能真从来都不是事, 软件架构和技术选型反而是杀伤更大的坑... 早年写的代码不管维护重构多少次, 第二年看全都像屎山
    superbai
        3
    superbai  
       174 天前
    OP 是用 Python 做什么场景的业务?感觉对性能很看重但是又用了 Python ,比较好奇
    ClericPy
        4
    ClericPy  
    OP
       174 天前 via Android
    @superbai
    最近处理 asyncio 做流量转发调度相关,还有 TCP 日志啥的,两个都几千 qps 处理一大堆 TCP ,以前折腾 hadoop steaming 跟爬虫,那时候才真是天天被逼着砍配置...
    pefan
        5
    pefan  
       174 天前 via iPhone
    HN 上有人试用第一个,不过 import numpy 就卡住了。
    lookStupiToForce
        6
    lookStupiToForce  
       174 天前
    第一个项目自己也提到了需要大型库自身对 Codon 提供支持才行,目前来看还属于星星之火,是否能燎原依然看大型库的开发者,可以想见要轮到普通开发者使用还遥遥无期
    shinession
        7
    shinession  
       173 天前
    看到 taichi 就不想去试了,之前就因为 pandas 没办法导入,搞了好久放弃了.这么常用的库都不支持,我都好奇到底支持什么库
    ClericPy
        8
    ClericPy  
    OP
       173 天前
    @pefan
    @shinession
    @lookStupiToForce

    所以这么些各种提速, 限制还是大. 目前还是针对特殊场景优化的, 想用通用型的还是走 pypy pyston 之类的方案? mypyc 看到很久了还没试不知道靠谱不靠谱

    好几次想 all-in golang 但还是舍不得...
    Vavrines
        9
    Vavrines  
       173 天前   ❤️ 1
    我还以为只有我这种做科学计算的会关心性能,这里目前还是 numba 最开箱即用
    codon 的集赞速度让我觉得他们可能更适合开一家公关公司...
    jjx
        10
    jjx  
       173 天前
    codon 说是 python 编译器感觉有点误导 其实就是个新语言
    vicalloy
        11
    vicalloy  
       172 天前
    试着 import 了一下标准库,连 logging 都过不了。
    感觉离真正的实用还有很大一段距离。
    而且根据协议只是个人使用免费。
    谨慎观望中。
    ClericPy
        12
    ClericPy  
    OP
       172 天前
    @Vavrines 今天手撸归并排序的变种, 不开多核真拙急... 性能这东西肯定还是越高越好

    综上所有人所述, Python 求性能还是老老实实三板斧吧
    penguinWWY
        13
    penguinWWY  
       171 天前   ❤️ 1
    看了下 Codon 的实现,目前只能算是个玩具
    这个思路有点像前几年在 js 上做 Code smells and type analysis —— 只要用户写出非常易于优化的代码,我就可以优化的非常好。
    learningman
        14
    learningman  
       171 天前   ❤️ 1
    codon 正在试,感觉是另外一语言,只是和 python 很像,能 interop 罢了

    benchmark 都跑不通。。。

    https://gist.github.com/Zxilly/b5d909d48ec283e514765afee32a3b14
    penguinWWY
        15
    penguinWWY  
       171 天前
    @learningman 需要环境变量 CODON_PYTHON ,用来指定 libpython
    learningman
        16
    learningman  
       170 天前
    @penguinWWY #15 跑通了,还是慢,因为他没写浮点库还是在 python 跑的。
    估计过两年再来看好点,现在还是个玩具能有 3k star 挺离谱的
    NoAnyLove
        17
    NoAnyLove  
       169 天前
    对于 codon ,我记得以前 Google 有类似的项目 Grumpy ,尝试将 Python 编译成 Go ,可惜又是一个被放弃了的项目。从使用上来说,感觉有点类似 Numba ,不过将 LLVM 扩展到了整个程序(虽然一个用的是 JIT ,一个用的是 AOT ),但是理论上应该都只能对某些特定语法的加速。另外,这是一个商业开源项目,希望有商业公司的支持下发展能够好一些吧。但目前看来,似乎还没有发展到可以用于生产环境中的程度。

    @ClericPy
    #2 pyston 最大的问题是 ABI 不兼容,原生扩展需要重新编译,如果只是个玩具项目还行,但如果真用在生产环境中,编译扩展就变得非常麻烦。即使有 conda 提供了一些编译好了的 Pyston 扩展包,还是有很多需要自己处理的。相比之下,衍生出的 pyston-lite 反而更加易用,只需要安装一个额外的扩展就能启用 JIT ,虽然性能提升不如 pyston-full ,大概只有 10%-15%,但相当于白捡的啊。

    一直想试试 nuitka ,不过没找到合适的机会。 不过为啥协程反而性能降低了?另外,能不能江一下为啥 reuse_port 在这里有用? hpy 感觉只是一个针对不同 Python 实现( CPython ,PyPy ,GraalPython )的一个通用 API 抽象层,对性能应该没啥英雄吧。

    #8 特殊场景优化比较麻烦,但是也比较有意思。我觉得性能优化需要区分优化负载和优化延迟。前者是优化性能使其可以处理更多的工作,更高的并发,等。后者则是优化性能使其更快完成响应。

    #12 哪三板斧?

    @learningman #14 benchm 跑 Decimal 没意义,Decimal 基本上都是调用_decimal 的 C 扩展,都不算是 Python 代码了。可以换成_pydecimal 试试。
    ClericPy
        18
    ClericPy  
    OP
       169 天前
    @NoAnyLove reuse_port 当时说的其实就是多核+协程... 没啥特殊的

    nuitka 协程性能降低我也不能太确定是不是测试代码的问题, 高并发单核协程时候, 同一套代码原生 Cpython 测试好几次都比编译好的 .exe 好不少, 没具体去试, 不过纯粹的循环和函数 nuitka 里有提升, 却也没到好几倍那么明显.

    三板斧还是讨论了好多年把 Python 当胶水的其他语言动态链接库 / Cython / pypy(pyston 之类的), 这么多年了最稳定的还是这几个, 好几个 Benchmark 好看的库也基本都是 Cython 或者 rust 写模块

    Python 追求性能看来短期内还是没有特别大的惊喜
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4868 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:05 · PVG 16:05 · LAX 01:05 · JFK 04:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.