大数跨境
0
0

Python 现在可以运行 Mojo 了?一文读懂这场编程界新变革

Python 现在可以运行 Mojo 了?一文读懂这场编程界新变革 码途钥匙
2025-06-28
0
导读:近期,一个重磅消息在开发者社区掀起波


近期,一个重磅消息在开发者社区掀起波澜:Python 如今能够运行 Mojo 代码了。这一突破看似简单,实则可能重塑 Python 生态乃至整个编程领域的格局。


Mojo:被寄予厚望的 “Python 进阶者”

Mojo 自诞生起,便自带光环,因其 “比 Python 快 90000 倍” 的宣传语而备受瞩目,甚至被视为 “可能彻底改变 Python 命运” 的新语言。它由 ChrisLattner 团队推出,ChrisLattner 何许人也?他可是 LLVM 项目的创始人,Swift 编程语言的缔造者,在编程语言领域拥有深厚造诣与广泛影响力 。
Mojo 旨在成为 Python 的超集,汲取众多酷炫语言、编译器和技术的精华,为 Python 向前发展注入强大动力。用 ChrisLattner 的话说,“它是 Python 家族的一员,让 Python 向前迈进了一大步。赋予 Python 程序员超能力,使他们无需转用 C++,就能探索并征服新领域” 。


Python 调用 Mojo:简单几步,开启性能飞跃

据开发者 Vincent D. Warmerdam 的实测,Python 调用 Mojo 现已变得相当便捷。具体操作如下:
首先,使用 uv 进行安装,在命令行中输入:
uv pip install modular --index-url https://dl.modular.com/public/nightly/python/simple/
随后,创建一个 .mojo 文件,例如导出一个计算阶乘的函数 factorial(),文件内容如下:

from python import python objectfrom python.bindings import python module builderimport mathfrom os import abort@exportfn pyinit_mojo_module() -> python object:try:var m = python module builder("mojo_module")m.def_function(factorial)("factorial", docstring="compute n!")return m.finalize()except e:return abort(python object)(string("error creating python mojo module : ", e))fn factorial(py_obj: python object) raises -> python object:var n = int(py_obj)var result = 1for i in range(1, n + 1):result *= ireturn result
如此一来,便可以在 Python 中加载该 .mojo 文件,代码如下:

import max.mojo.importerimport osimport sysimport timeimport mathsys.path.insert(0"")import mojo_modulestart = time.time()print(mojo_module.factorial(10))end = time.time()print(f"time taken : {end - start} seconds for mojo")start = time.time()print(math.factorial(10))end = time.time()print(f"time taken : {end - start} seconds for python")
运行上述代码后,输出结果显示,对于计算 factorial(10) 这样的轻量级任务,Mojo 与 Python 本身的速度相差不大。然而,当输入扩展到 factorial(100) 时,问题出现了,Mojo 返回的结果竟然是错误的(输出为 0),而 Python 得出的结果则准确无误。


性能实测:Mojo 优势初显

Vincent 还进行了另一个示例测试,选用了一个朴素的质数计数程序。通过 Python 原生实现、NumPy 实现以及 Mojo 实现的对比,结果令人眼前一亮。
当计算 n = 20000 以内的质数数量时:
  • Python 原生实现耗时约 0.45 秒;

  • NumPy 实现耗时约 0.26 秒;

  • Mojo 实现仅耗时 0.01 秒。

虽然该测试所采用的并非最优算法,但结果仍极具参考价值。在这种纯 CPU 密集型的计算任务中,Mojo 的性能提升十分显著,与 NumPy 相比,也展现出数量级上的优势 。


Mojo 的特性与潜力:性能与易用性兼得

从语法风格来看,Mojo 延续了 Python 的简洁性,让 Python 开发者能够轻松上手。同时,它又具备编译语言的性能与类型系统,有望在需要高性能计算的场景中大展身手,如人工智能、大数据处理、科学计算等领域。
Mojo 还能够与 Python 生态系统深度融合,实现与任意 Python 代码的无缝集成。这意味着开发者无需重写整个项目,只需将性能瓶颈部分用 Mojo 实现,就能为项目带来显著的性能提升,极大地降低了迁移成本 。


前路漫漫:Mojo 的现状与未来

需要注意的是,Mojo 当前仍处于早期阶段。其文档覆盖不够全面,标准库功能有限,整套开发体验也尚未稳定。这表明它距离 “生产可用” 还有一段距离 。
不过,从 ModularMojo 的开发公司)的一系列动作中可以看出,团队正积极为 Python 社区打造 “融合路径”,致力于围绕 Python 生态做加速和增强,而非简单地 “替代 Python”。这种 “拥抱兼容” 的态度,或许能让 Mojo 更顺利地被 Python 社区接纳 。
就像 Vincent 评价的那样,“现在还不能称得上‘生产可用’,但我已经更有信心了 —— 梦想确实正在靠近。” 随着技术的不断迭代,Mojo 能否兑现其强大性能的承诺,为 Python 开发者带来全新的高效开发体验?让我们拭目以待 。

【声明】内容源于网络
0
0
码途钥匙
欢迎来到 Python 学习乐园!这里充满活力,分享前沿实用知识技术。新手或开发者,都能找到价值。一起在这个平台,以 Python 为引,开启成长之旅,探索代码世界,共同进步。携手 Python,共赴精彩未来,快来加入我们吧!
内容 992
粉丝 0
码途钥匙 欢迎来到 Python 学习乐园!这里充满活力,分享前沿实用知识技术。新手或开发者,都能找到价值。一起在这个平台,以 Python 为引,开启成长之旅,探索代码世界,共同进步。携手 Python,共赴精彩未来,快来加入我们吧!
总阅读181
粉丝0
内容992