Python 现在可以运行 Mojo 了?

Mojo 教程之 将 Python 的可用性与 C 语言的性能结合起来用于 AI 硬件和模型 Mojo 是一种用于创建 AI 模型的编程语言。它被设计成模块化的,这意味着用户可以创建可跨多个项目使用的自定义模块。这种模块化的方法使得重用代码变得容易,这可以为开发人员节省大量的时间和精力。Mojo还使用 Python 的语法,这使得熟悉该语言的开发人员可以轻松学习。但是,它比 Python 快得多,因此非常适合与加速器一起使用。 阅读详情

本文经授权转自公众号优快云(ID:优快云news)

作者 | Vincent,编译 | 苏宓

👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。

👇我的小册 AI工具100个实战小案例:(100个AI工具实战小案例) ,原价299,限时早鸟价29,满100人涨10元。

两年前,Swift 之父、编译器大神 Chris Lattner 和 Google 前员工 Tim Davis 组队创立了初创公司 Modular,推出了高性能编程语言 Mojo。凭借“比 Python 快 90000 倍”的惊人宣传语,Mojo 成为整个开发者社区关注的焦点,被认为是“可能彻底改变 Python 命运”的新语言。

Chris Lattner 曾这样描述 Mojo:“ 它是 Python 家族的一员,汲取了所有这些酷炫的语言、编译器和其他技术,让 Python 向前迈进了一大步。我们认为它增强了 Python 的能力,赋予 Python 程序员超能力,让熟悉 Python 的人能够学习新知识,探索并征服新领域,而无需转用 C++。”

而如今,Chris Lattner 低调放出了一个意味深长的新变化:Python 现在可以直接调用 Mojo 代码了。

1、Mojo 正在被 Python 调用

据开发者 Vincent D. Warmerdam 的实测,Python 调用 Mojo 现在变得非常简单,详细步骤如下。

首先,可以直接用 uv 安装:

uv pip install modular --index-url https://dl.modular.com/public/nightly/python/simple/

然后你可以创建一个 .mojo 文件,导出一个计算阶乘的函数 factorial(),内容如下:

# mojo_module.mojofrom python import PythonObjectfrom python.bindings import PythonModuleBuilderimport mathfrom os import abort@exportfn PyInit_mojo_module() -> PythonObject:    try:        var m = PythonModuleBuilder("mojo_module")        m.def_function[factorial]("factorial", docstring="Compute n!")        return m.finalize()    except e:        return abort[PythonObject](String("error creating Python Mojo module:", e))fn factorial(py_obj: PythonObject) raises -> PythonObject:    var n = Int(py_obj)    var result = 1    for i in range(1, n + 1):        result *= i    return result

然后你就可以在 Python 中加载它:

# main.pyimport max.mojo.importerimport osimport sysimport time import 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")

运行结果如下:

3628800Time taken: 3.0279159545898438e-05 seconds for mojo3628800Time taken: 5.0067901611328125e-06 seconds for python

一切运行正常。

2、问题显现

不过,在实测时,Vincent 也注意到了一些问题,对于 factorial(10) 这样的轻量计算,Mojo 与 Python 本身速度相差无几。但当输入扩大到 factorial(100) 时,Mojo 返回的结果却是错误的(输出为 0),而 Python 的结果则是正确的。

0Time taken: 2.7894973754882812e-05 seconds for mojo188267717688892609974376770249160085759540364871492425887598231508353156331613598866882932889495923133646405445930057740630161919341380597818883457558547055524326375565007131770880000000000000000000000000000000Time taken: 9.298324584960938e-06 seconds for python

这可能是 Mojo 侧溢出的结果。文档也提到这整套系统还处于早期阶段,说明其数值系统尚不成熟。

3、另一个例子

考虑到上面的问题可能是溢出引起的,Vincent 又试了一个例子来看看能不能测出加速效果。这次是一个朴素的素数统计实现。Mojo 代码如下:

from python import PythonObjectfrom python.bindings import PythonModuleBuilderimport mathfrom os import abort@exportfn PyInit_mojo_module() -> PythonObject:    try:        var m = PythonModuleBuilder("mojo_module")        m.def_function[count_primes]("count_primes", docstring="Count primes up to n")        return m.finalize()    except e:        return abort[PythonObject](String("error creating Python Mojo module:", e))fn count_primes(py_obj: PythonObject) raises -> PythonObject:    var n = Int(py_obj)    var count: Int = 0    for i in range(2, n + 1):        var is_prime: Bool = True        for j in range(2, i):            if i % j == 0:                is_prime = False                break        if is_prime:            count += 1    return count

对应的 Python 测试代码如下,此外 Vincent 还加了一个 NumPy 实现做对比:

import numpy as npimport max.mojo.importerimport osimport sysimport time import mathsys.path.insert(0, "")import mojo_moduledef count_primes(n):    count = 0    for i in range(2, n + 1):        is_prime = True        for j in range(2, i):            if i % j == 0:                is_prime = False                break        if is_prime:            count += 1    return countdef count_primes_numpy(n):    if n < 2:        return 0    candidates = np.arange(2, n + 1)    is_prime_mask = np.ones(len(candidates), dtype=bool)    for idx, candidate in enumerate(candidates):        if candidate == 2:            continue        divisors = np.arange(2, candidate)        has_divisor = np.any(candidate % divisors == 0)        if has_divisor:            is_prime_mask[idx] = False    return np.sum(is_prime_mask)n = 20_000start = time.time()print(count_primes(n))end = time.time()print(f"Time taken: {end - start} seconds for python")start = time.time()print(count_primes_numpy(n))end = time.time()print(f"Time taken: {end - start} seconds for numpy")start = time.time()print(mojo_module.count_primes(n))end = time.time()print(f"Time taken: {end - start} seconds for mojo")

运行结果如下:

  • Python 原生实现耗时:约 0.45 秒

  • NumPy 实现耗时:约 0.26 秒

  • Mojo 实现耗时:仅 0.01 秒

2262Time taken: 0.44585609436035156 seconds for python2262Time taken: 0.25995898246765137 seconds for numpy2262Time taken: 0.011101961135864258 seconds for mojo

尽管这一 benchmark 并非最优算法,但结果仍然具备参考价值:在这种纯 CPU 密集型的计算任务中,Mojo 的性能提升确实相当明显,尤其是与 NumPy 相比也有数量级上的优势。

4、写在最后

整体而言,通过实测,Vincent 发现,Mojo 的语法风格延续了 Python 的简洁性,同时具备编译语言的性能与类型系统。

不过,Mojo 当前仍处于早期阶段。文档覆盖不全、标准库功能有限、整套开发体验尚不稳定……这也意味着距离“生产可用”还有距离。

但从 Modular 的近期动作可以看出,该团队正在有意识地为 Python 社区打造“融合路径”——不是简单地“替代 Python”,而是围绕其生态做加速和增强。这种“拥抱兼容”的姿态或许更务实,也更容易获得社区的接纳。

对此,Vincent 评价道,「现在还不能称得上“生产可用”,但我已经更有信心了 —— 梦想确实正在靠近。」

原文:https://koaning.io/posts/giving-mojo-a-spin/

本文转自公众号“优快云”,ID:优快云news

图片

最后推荐一下我们团队写的量化小册的内容,48篇内容!从Python安装,入门,数据分析,爬取股票基金的历史+实时数据,以及如何写一个简单量化策略,策略回测,如何看资金曲线统统都有介绍!非常超值!

欢迎订阅:原价299 早鸟价2杯咖啡钱,即可永久阅读。现在的价格非常非常低,只要2杯奶茶,就可以终身订阅+课程源码,还有永久陪伴群。48小时无理由退款,放心食用!

图片

往期推荐
量化: 如何用Python爬取创业板历史+实时股票数据!|实战股票分析篇利用Pandas 9招挖掘五粮液股价!|实战股票数据分析篇 Pandas滚动操作 |量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!|如何用Python爬取全部800多只ETF基金数据!|如何用Python写一个双均线策略 |如何用Python开发一个多策略机器人!上篇!|Python量化系列-用布林策略买五粮液能赚多少钱?|只要4秒钟!用Python 获取上证指数34年的历史日线数据!
【人工智能】Mojo(Python+)可能是几十年来最大的编程语言进步| Mojo may be the biggest programming language advance in decades 我实际上并没有使用Python的所有功能,但必须使用与我所针对的后端兼容的子集。LLVM包括一种“中间表示”(IR),这是一种为机器读写(而不是人)设计的特殊语言,它使庞大的软件社区能够协同工作,在更广泛的硬件上提供更好的编程语言功能。因为 Python 是一种解释型语言,所以你的程序的行为方式将取决于安装的 python 的确切版本、存在的库的版本以及它们的配置方式。此外,Julia 中使用的多调度方法是一个相当不寻常的选择,它既打开了很多用语言做很酷的事情的大门,但也会让开发人员的事情变得非常复杂。 阅读详情

相关推荐

PyCharm 2023最新版安装配置全攻略(附永久激活教程)

本文详细介绍了PyCharm 2023最新版的安装配置全流程,包括版本选择、初始配置、插件生态、工程模板、调试优化及团队协作等关键步骤。特别针对专业版和社区版的功能差异进行对比,帮助开发者高效搭建Python开发环境,提升编码效率与团队协作能力。

p4q5r6s7t的博客 874

MOJO中导入python模块

在Mojo中使用Python时不需要担心内存管理问题。一切都可以正常工作,因为Mojo从一开始就是为Python设计的。例如,有一个名为mypython.py的Python文件。

qq_24889005的博客 936

PVE(Proxmox VE)添加VMware Esxi并迁移虚拟机

跨平台迁移虚拟机:从VMware虚拟化平台迁移虚拟机到PVE平台。

VEGETA的博客 7720

Mojo 学习 —— 与 Python 交互

为了使Mojo成为Python的超集,必须保证能与现有的Python程序兼容。Python使用者应能很快入手Mojo,并能够使用Python软件包生态系统。但是,Mojo仍处于早期开发阶段,许多功能尚未实现。目前还不能在Mojo中编写在Python代码。也还没有搭建好自己的软件包生态系统。作为一个替代方案,Mojo允许您导入Python模块,并调用Python函数,与Python对象交互。Mojo使用标准解释器(CPython)运行Python代码,可与现有的Python代码完美兼容。

dxs18459111694的博客 1413

脑影像分析入门:如何用一般线性模型(GLM)处理fMRI数据?

本文为神经影像研究入门者详细解析了如何运用一般线性模型(GLM)处理fMRI数据。文章从GLM的核心原理出发,逐步拆解了从实验设计、构建稳健设计矩阵、模型估计与统计推断,到高阶分析及多重比较校正的全流程,并指出了常见陷阱与结果解读要点,是掌握fMRI数据分析基础的关键指南。

weixin_29091445的博客 400

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

Python 运行时常见问题汇总与解决方案(含 Mojo 扩展)

本文系统分析了Python运行时常见问题及其解决方案,涵盖语法错误(缩进、冒号缺失)、运行时错误(未定义变量、类型不匹配、索引越界等)、环境依赖问题(模块导入、版本冲突)以及逻辑错误。特别新增了对Mojo语言的适配场景,重点讨论了类型注解、编译模式冲突等Mojo特有问题的解决方法。文章还提供了通用的调试工具与技巧,如异常捕获、日志记录和类型检查器。通过分类整理和针对性解决方案,帮助开发者更高效地调试代码并确保程序稳定性,同时兼顾Python原生问题与新兴Mojo语言的兼容性考量。

辅导大学生代码设计15年 1916

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解

本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。

weixin_29164185的博客 421

Mojo与Python共生部署(生产级热加载+无缝GC协同):字节/阿里内部流出的混合运行时配置模板

解决Mojo与Python混合编程案例生产环境部署难题,支持热加载与GC协同。适用于AI推理服务、高频计算微服务等场景,提供字节/阿里验证的运行时配置模板。含内存隔离、异常穿透、启动优化三重保障,值得收藏。

CodePulse的博客 340

IEC 60747-8 是由国际电工委员会(IEC)制定的标准,标题为《半导体器件 - 分立器件 - 第8部分:场效应晶体管》

IEC 60747-8 是由国际电工委员会(IEC)制定的标准,标题为《半导体器件 - 分立器件 - 第8部分:场效应晶体管》(Semiconductor devices - Discrete devices - Part 8: Field-effect transistors)。该标准详细规定了场效应晶体管(FETs)的测试方法,涵盖静态和动态特性测试,适用于多种类型的FET,包括结型场效应晶体管(JFETs)、绝缘栅场效应晶体管(MOSFETs,增强型和耗尽型)等。3. 标准其他部分(简要概述)

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 577

openclaw中文版安装教程和常用命令

OpenClaw 中文版的和,涵盖本地一键部署、Docker 隔离部署、阿里云极速部署三种方式,以及六大类高频命令,方便你快速上手和日常运维。

suny8的专栏 3006

混合运行时内存泄漏追踪实战:用eBPF+Mojo Profiler定位Python C API误用导致的UAF漏洞

精准定位混合编程内存缺陷:结合eBPF与Mojo Profiler追踪Python C API误用引发的UAF漏洞。适用于Mojo与Python混合编程案例安全性最佳方案,实现低开销、高精度运行时分析。支持生产环境部署,无需修改源码,值得收藏。

FuncInk的博客 412

Python爬虫实战:爬取Bilibili和YouTube视频、弹幕和评论

随着视频内容平台的爆发式增长,视频网站成为了人们获取信息、娱乐和知识的重要渠道。在这些平台上,视频、弹幕和评论数据可以为我们提供重要的信息,帮助我们了解用户的行为、视频的受欢迎程度以及内容的互动情况。本篇文章将带你实现一个Python爬虫,用来爬取Bilibili和YouTube上的视频、弹幕、评论等数据。我们将详细介绍爬虫的实现过程,使用最新的Python技术,并且会提供完整的代码。Bilibili网站提供了多种方式来获取视频数据,最直接的方式是通过其开放的API接口来获取视频、弹幕和评论等数据。

2201_76125261的博客 1777

Mojo+Python混合项目部署失败全记录(含完整错误日志溯源与跨运行时调试手册)

快速定位并解决Mojo+Python混合项目部署失败问题,涵盖典型混合编程案例报错解决方法、错误日志溯源技巧与跨运行时调试流程,适用于CI/CD集成与本地开发场景。提供可复用的环境隔离方案与ABI兼容性检查清单,值得收藏。

IterLoom的博客 450

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Mojo+Python混合部署失效真相】:92%开发者忽略的编译期符号冲突、运行时上下文隔离与调试断点丢失问题

揭秘Mojo+Python混合部署失效根因,提供可复现的Mojo 与 Python 混合编程案例 源码分析。聚焦编译期符号冲突检测、运行时上下文隔离方案及断点调试修复方法,适用于AI模型加速与胶水层开发场景,值得收藏。

VarFlow的博客 385

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【限时开放】Mojo-Python互操作安全边界图谱(2024 Q3最新CVE影响评估+3类高危反模式代码扫描规则),错过将无法适配Mojo v1.2+运行时

解决Mojo与Python混合编程安全互操作难题,提供CVE影响评估、反模式扫描及3类高危代码修复方案。覆盖API边界校验、内存生命周期管理、类型桥接等实战场景,提升v1.2+运行时兼容性与稳定性。含Mojo与Python混合编程案例实战案例,值得收藏。

Instrustar的博客 211

Mojo主控+Python微服务协同部署(单节点双Runtime热容灾设计):某自动驾驶公司已稳定运行217天的SRE运维白皮书

解决AI系统高性能与生态兼容性矛盾,提供Mojo与Python混合编程案例生产环境部署方案。适用于自动驾驶实时推理场景,采用单节点双Runtime热容灾架构,主控用Mojo保障低延迟,微服务用Python复用生态,已稳定运行217天。值得收藏

simcode的专栏 393

Mojo之猜数字游戏

Mojo猜数字游戏

stark_cc的博客 272

【Mojo-Python混合编程安全白皮书】:20年安全架构师亲授4层隔离防护体系,规避97.3%的跨运行时漏洞风险

解决Mojo与Python混合编程安全风险,提供经验证的4层隔离防护体系。覆盖API调用、内存管理、类型校验与运行时沙箱场景,显著降低跨运行时漏洞发生率。包含真实Mojo与Python混合编程案例安全性最佳方案,规避97.3%已知风险,值得收藏。

QuickTrans的博客 400

比 Python 快 9 万倍的 Mojo 终于开源了!

在谈到 Mojo 时,Modular 创始人兼首席执行官 Chris Lattner 表示:“可以这样理解,Mojo 是 Python 家族的一员,它汲取了所有这些酷炫的语言、编译器和其他技术,让 Python 向前迈进了一大步。首先 Mojo 的编译速度很快,而且使用感受跟大家已经熟悉的语言非常接近,性能也跟 Rust 不相上下。去年,Mojo 推出后,一些开发者对它的出现表现得非常兴奋,但当被问及开源日期时, Chris Lattner 在 Discord 上是这样说的:“如果我知道的话我会告诉你的。

richerg85的专栏 1768

Mojo:集多特性于一身,像 Python 编写、C++ 运行,开源计划已定!

同样,你也可以将 Python 生态系统中的库导入到 Mojo 代码中。你可以通过条件编译构建特定硬件的优化,通过编译时评估确保内存安全,消除昂贵的运行时分支等等,所有这些都具有明确的意图和零成本抽象。高性能 CPU + GPU 编码,使 Mojo 成为一种强大且富有表现力的语言,用于在 CPU、GPU 和 ASIC 上编写高性能内核,同时让开发者能够无缝扩展 Python。Mojo 汲取了现代语言的精华,如 Python 直观的语法、Rust 的内存安全,以及 Zig 强大且直观的编译时元编程能力。

yuyanhome的博客 87

专为AI设计的编程语言Mojo

最重要的是,Mojo 具备了使用 Python 库整个生态系统的能力。新编程语言Mojo 作为 Python 家族的一员,它建立在 Python 之上,专为 AI 应用程序而设计。Mojo 结合了 Python 的可用性和 C/C++ 的性能,Mojo被设计为Python的超集。Mojo群:https://www.mojofire.cn/docs/chat.html。Mojo语言还很年轻,Mojo 标准库、编译器和运行时尚不可用于本地开发。Mojo中文 https://www.mojofire.cn/

weixin_38416936的博客 431

在python3.14中测试mojo语言

摘要:本文记录了在Python 3.14容器中安装Mojo语言的过程,并测试了多个示例程序。测试结果显示Mojo语法与Python相似但执行速度更快,特别是递归计算斐波那契数列时表现突出。测试过程中发现《Mojo秘籍》中Triangle示例因使用已废弃的StringableRaising导致报错,经提交问题后作者快速修正为使用Writable。此外,当前安装的Mojo版本不支持REPL交互模式。

l1t的专栏 281

Mojo加速Python科学计算:从零部署GPU加速管道,实测提速17.8倍(附可运行代码库)

Mojo加速Python科学计算,解决CPU瓶颈与GPU部署难题。涵盖Mojo与Python混合编程案例入门到精通教程,实测PyTorch管道提速17.8倍。支持CUDA直调、类型提示与无缝ffi集成,适用于AI训练、数值仿真等场景。值得收藏。

CompiLume的博客 372

Mojo官方例子|可直接notebook运行

制作好的镜像,可以直接运行,快速体验一下新语言。

weixin_43262264的博客 396
上一篇: 突发,国产DPU头部公司大暴雷:欠薪数月、零赔偿裁员
下一篇: 31岁程序员搞副业,6个月喜提8000万刀退休金!
菜鸟学Python
博客等级 码龄9年 8086粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值