首页 >>  正文

关于python的论文

来源:baiyundou.net   日期:2024-09-24

编译 | 苏宓

出品 | CSDN(ID:CSDNnews)

Python 的运行速度快吗?虽说不同场景不同定论,但整体而言,它没有 C、Java 快。这也导致 Python 凭借可读性、简单易上手、良好的生态系统横行 AI 领域时,一提到速度,就成为众多开发者头疼的问题。

为了解决这一难题,麻省理工学院的计算机科学家出手了,他们共同研发了一种名为 Codon 的 Python 编译器,可以将 Python 代码转化为本地机器代码,而不会对运行时的性能产生影响。

当前,Codon 已经在 GitHub 上开源:https://github.com/exaloop/codon,斩获 6300 个 Star。

Codon 与 C/C++ 性能相当

"在单线程上,比 Python 的典型速度提高了 10-100 倍或更多,"Codon repo写道,"Codon 的性能通常与 C/C++ 的性能相当(有时甚至更好)。"

与 Python 不同的是,Codon 支持本地多线程,这可以使速度提高许多倍。

Codon 最初是作为一个在 Python 中创建高性能特定领域语言(DSL,domain-specific language)的框架而开发的。DSL 是专注于特定目的的语言,而不是像 Python 或 C 这样的通用编程语言。

官方 GitHub repo 透露,Codon 源于 Seq 项目,后者是一个用于生物信息学和遗传学的 DSL,现如今它已经成长为一个与 Python 3 基本兼容的语言编译器。

近期,外媒 The Register 通过该工具的研究团队内部最新分享了一个关于 Codon 的论文。本论文的作者包含了,MIT、维多利亚大学等多名研究人员,如 Ariya Shajii(Exaloop)、Gabriel Ramirez(MIT CSAIL)、Haris Smajlović(加拿大维多利亚大学)、Jessica Ray(MIT CSAIL)、Bonnie Berger(MIT CSAIL)、Saman Amarasinghe(MIT CSAIL)和 Ibrahim Numanagić(维多利亚大学)。

这篇论文指出,"与其他面向性能的 Python 实现(如 PyPy 或 Numba)不同,Codon 是作为一个独立的系统从头开始构建的,它可以提前编译为静态可执行文件,并且不与现有的 Python 运行时(如 CPython 或 RPython)绑定执行。因此,Codon 可以实现更好的性能,并克服运行时的特定问题,如全局解释器锁"。

在论文中,作者也讨论了各种基于 Codon 的高性能 DSL,这些 DSL 设计用于生物信息学、数据压缩和并行编程,也利用了 Codon 的编译器基础设施。但是 Codon 可以大幅加速标准的 Python 程序,尽管那些依赖外部库(如 Django 或 DocUtils)的程序必须依赖 CPython 桥接,这就限制了 CPython 的性能。

"Codon 不需要使用像 numpy 这样的 C 语言实现的库来重写程序,也不需要完全用 C 语言重写,而是可以使用相同的 Python 实现,并给出你用 C 语言重写的相同性能",麻省理工学院教授和 CSAIL 首席研究员 Saman Amarasinghe说 道,"因此,我相信 Codon 是成功的 Python 应用程序的最简单的前进道路,这些应用程序由于缺乏性能而达到了一个极限。"

测试

那么 Codon 是否真的如说的那样快?在 Codon 论坛上,一位开发者进行了测试:

$ cat fib.py def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2)if __name__ == "__main__": import sys print(fib(int(sys.argv[1])))

CPython 3.11

$ python fib.py 40102334155# mem: 8'816_KB# time: 18.42_s

PyPy 7.3.9

$ pypy fib.py 40102334155# mem: 74'596_kB# time: 4.99_s# ~= 3.7xCodon compiled$ codon build -release fib.py$ ./fib 40102334155# mem: 5'612_kB# time: 0.26_s# ~= 70.8x

Codon with python interpreter

# in fibpy.py, we just add `@python` decorator to fib function$ codon build -release fibpy.pyexport CODON_PYTHON=/path/to/libpython3.11.so$ ./fibpy 40102334155# mem: 12'828# time: 18.49# ~= 1x

最终发现,一个简单的 Codon 编译的斐波那契脚本比 CPython 版本快 70 多倍。

除此之外,该研究团队也在 GitHub 上贴出了 Codon 基准测试套件的结果,比较了 Python、PyPy、C++ 和 Codon 在一系列任务和应用上的表现。该基准测试是在以下设置上运行的:

最终结果如下所示:

据 Codon 官方文档显示,虽然 Codon 的语法和语义与 Python 的几乎相同,但还是有一些值得一提的区别,如数据类型方面:

整数。Codon 的 int 是一个 64 位有符号的整数,而 Python 的(在版本 3 之后)可以是任意大的。然而 Codon 通过 Int[N] 支持更大的整数,其中 N 是位宽。

字符串。Codon 目前使用 ASCII 字符串,与 Python 的 unicode 字符串不同。

字典。Codon 的字典类型不保留插入顺序,与 Python 3.6 的不同。

此外,Codon 和 Python 在类型检查、数值运算、模块等维度还有些许的不同,更详细的内容可参考:https://docs.exaloop.io/codon/general/differences据悉,Codon 已经被商业化地应用在金融和生物信息学、深度学习等领域。

参考来源:

https://www.theregister.com/2023/03/11/python_codon_compiler/

GitHub 地址:https://github.com/exaloop/codon

","gnid":"9045dadcbcc87d387","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b.gif","width":"640"},{"desc":"","height":"225","title":"","url":"https://p0.ssl.img.360kuai.com/t0178d549698d0523f3.jpg","width":"621"},{"desc":"","height":"381","title":"","url":"https://p0.ssl.img.360kuai.com/t01c12a892b850ab27a.jpg","width":"760"},{"desc":"","height":"223","title":"","url":"https://p0.ssl.img.360kuai.com/t01394bd0286de65815.jpg","width":"609"},{"desc":"","height":"255","title":"","url":"https://p0.ssl.img.360kuai.com/t01422ed2e4fb10da02.jpg","width":"682"},{"desc":"","height":"514","title":"","url":"https://p0.ssl.img.360kuai.com/t011e610db831e18a5e.jpg","width":"1080"},{"desc":"","height":"464","title":"","url":"https://p0.ssl.img.360kuai.com/t01426493172c5ee51a.jpg","width":"1080"},{"desc":"","height":"463","title":"","url":"https://p0.ssl.img.360kuai.com/t01c4c730d25cc6a6a9.jpg","width":"1080"},{"desc":"","height":"473","title":"","url":"https://p0.ssl.img.360kuai.com/t0134b651945943a41b.jpg","width":"1080"},{"desc":"","height":"470","title":"","url":"https://p0.ssl.img.360kuai.com/t014002f81f75af012c.jpg","width":"1080"},{"desc":"","height":"467","title":"","url":"https://p0.ssl.img.360kuai.com/t016d9032567e518d7a.jpg","width":"1080"},{"desc":"","height":"460","title":"","url":"https://p0.ssl.img.360kuai.com/t013aee4b3b3d98cd76.jpg","width":"1080"},{"desc":"","height":"485","title":"","url":"https://p0.ssl.img.360kuai.com/t01168b68b2a976410a.jpg","width":"1080"},{"desc":"","height":"452","title":"","url":"https://p0.ssl.img.360kuai.com/t0142d5ef648da6331c.jpg","width":"1080"},{"desc":"","height":"464","title":"","url":"https://p0.ssl.img.360kuai.com/t018fca4de54e22e04a.jpg","width":"1080"},{"desc":"","height":"447","title":"","url":"https://p0.ssl.img.360kuai.com/t018fb3034637bacf63.jpg","width":"1080"},{"desc":"","height":"479","title":"","url":"https://p0.ssl.img.360kuai.com/t01a93e43487fcbb5ea.jpg","width":"1078"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1678698128000,"pure":"","rawurl":"http://zm.news.so.com/21754115561f0310a9788d453956a2d6","redirect":0,"rptid":"2d5826113eb2a6d7","rss_ext":[],"s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:github","k":"github","u":""},{"clk":"ktechnology_1:麻省理工学院","k":"麻省理工学院","u":""}],"title":"让 Python 拥有 C/C++ 一样的速度,编译神器 Codon 发布!

臧佩姚4921python tfidf怎么加df限制 -
丰狐复15658427574 ______ 1.使用python+selenium分析dom结构爬取百度|互动百科文本摘要信息;2.使用jieba结巴分词对文本进行中文分词,同时插入字典关于关键词;3.scikit-learn对文本内容进行tfidf计算并构造N*M矩阵(N个文档M个特征词);4.再使用K-means进行文本聚类(省略特征词过来降维过程);5.最后对聚类的结果进行简单的文本处理,按类簇归类,也可以计算P/R/F特征值;6.总结这篇论文及K-means的缺点及知识图谱的一些内容.

臧佩姚4921python初学求解 -
丰狐复15658427574 ______ 你的代码应该是这样,但,题目应该是想让你写一个函数,而,你定义的right_justify 是个字符串变量啊space = ' 'i = 0while True: i += 1 if (i+len('allen')) == 70: b...

臧佩姚4921计算机专业但技术渣渣,想用python做毕业设计,有什么好的建议 -
丰狐复15658427574 ______ 职位多了,Java方向有Java开发、测试、web前端、数据库开发、架构师;大数据方向数据挖掘、数据分析;python方向,现在都以开发为主.

臧佩姚4921有关于python设计模式的书么 -
丰狐复15658427574 ______ 你既然说到深入学习,那基础入门的那些就不说了,首先推荐你《python源码剖析》一书,深入讲解了python虚拟机的内部原理.还有一本书《python高级编程》,里面讲了一些python的高级用法,还有一些设计模式的东西.《python标准库》一书完整地讲解了python的库函数,篇幅超过1000页,实例及其丰富.再推荐一本《python科学计算》,里面有大量的python的第三方库的使用细节.

臧佩姚4921关于Python的GUI参考书籍有哪些 -
丰狐复15658427574 ______ python学习手册, python基础教程,python核心编程, 这三本书都是讲基础的, 但是都有不足又相互补充 , 我建议你随便挑一本开始看, 当看到某个地方有些不明白的时候, 去看看另外两本书里对应的章节, 有的时候你会恍然大悟的; 下面就看你的想法了, 如果想去学web开发, 其实这时候就可以去学django了, 可以去看在线版的the django book; 如果觉得自己基础还不足的话, 可以看看python cookbook, python标准库实例, 还有python网络编程都挺好的, 如果想做gui开发的话也有很多方向, 推荐pyqt

臧佩姚4921有什么好的python进阶书籍推荐吗 -
丰狐复15658427574 ______ Python源码剖析 core python programming 2nd edition Expert Python Programming python参考手册2016/04/16更新 自己整理了一份关于 Python 的书籍, 按照水平和应用分类.https://github.com/Junnplus/awesome-python-books Grammar ...

臧佩姚4921黑客与逆向工程师的python编程之道怎么样
丰狐复15658427574 ______ Python是一款非常流行的脚本编程语言.特别是在黑客圈子里,你不会Python就几乎无法与国外的那些大牛们沟通.这一点我在2008年的XCon,以及2009年的idefense高...

臧佩姚4921python有哪些提取文本摘要的库 -
丰狐复15658427574 ______ 一篇文章的内容可以是纯文本格式的,但在网络盛行的当今,更多是HTML格式的.无论是哪种格式,摘要 一般都是文章 开头部分 的内容,可以按照指定的 字数 来提取.二、纯文本摘要 纯文本文档 就是一个长字符串,很容易实现对它的摘要...

臧佩姚4921关于Python 的经典入门书籍有哪些 -
丰狐复15658427574 ______ Core Python Programming 中文叫《Python核心编程(第二版)》.这部讲解Python由浅入深,比较关键和核心的特性都覆盖到,是进入Python的不错选择,但是后面几章和具体应用场景比如Web和GUI应用的开发比较浅只是点到为止,也就是具体的领域开发需要你参考方向更专一的书籍.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024