99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

Python 現在可以運行 Mojo 了?

0
分享至

作者 | Vincent 編譯 | 蘇宓

出品 | CSDN(ID:CSDNnews)

兩年前,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 代碼了。

AI 產品爆發,但你的痛點解決了嗎?8.15-16 北京威斯汀·全球產品經理大 會 PM-Summit,3000+ AI 產品人社群已就位。
直面 AI 落地難題、拆解頭部案例、對接精準資源!

掃碼登記信息,添加小助手進群,搶占 AI 產品下一波紅利:

進群后,您將有機會得到:
· 最新、最值得關注的 AI 產品資訊及大咖洞見
· 獨家視頻及文章解讀 AGI 時代的產品方法論及實戰經驗
· 不定期贈送 AI 產品干貨資料和秘籍


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.mojo
from python import PythonObject
from python.bindings import PythonModuleBuilder
import math
from os import abort
@export
fn 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.py
import max.mojo.importer
import os
import sys
import time 
import math
sys.path.insert(0, "")
import mojo_module
start = 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")

運行結果如下:

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

一切運行正常。


問題顯現

不過,在實測時,Vincent 也注意到了一些問題,對于 factorial(10) 這樣的輕量計算,Mojo 與 Python 本身速度相差無幾。但當輸入擴大到 factorial(100) 時,Mojo 返回的結果卻是錯誤的(輸出為 0),而 Python 的結果則是正確的。

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

這可能是 Mojo 側溢出的結果。文檔也提到這整套系統還處于早期階段,說明其數值系統尚不成熟。


另一個例子

考慮到上面的問題可能是溢出引起的,Vincent 又試了一個例子來看看能不能測出加速效果。這次是一個樸素的素數統計實現。Mojo 代碼如下:

from python import PythonObject
from python.bindings import PythonModuleBuilder
import math
from os import abort
@export
fn 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 np
import max.mojo.importer
import os
import sys
import time 
import math
sys.path.insert(0, "")
import mojo_module
def 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 count
def 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_000
start = 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 秒


2262
Time taken: 0.44585609436035156 seconds for python
2262
Time taken: 0.25995898246765137 seconds for numpy
2262
Time taken: 0.011101961135864258 seconds for mojo

盡管這一 benchmark 并非最優算法,但結果仍然具備參考價值:在這種純 CPU 密集型的計算任務中,Mojo 的性能提升確實相當明顯,尤其是與 NumPy 相比也有數量級上的優勢。


整體而言,通過實測,Vincent 發現,Mojo 的語法風格延續了 Python 的簡潔性,同時具備編譯語言的性能與類型系統。

不過,Mojo 當前仍處于早期階段。文檔覆蓋不全、標準庫功能有限、整套開發體驗尚不穩定……這也意味著距離“生產可用”還有距離。

但從 Modular 的近期動作可以看出,該團隊正在有意識地為 Python 社區打造“融合路徑”——不是簡單地“替代 Python”,而是圍繞其生態做加速和增強。這種“擁抱兼容”的姿態或許更務實,也更容易獲得社區的接納。

對此,Vincent 評價道,「現在還不能稱得上“生產可用”,但我已經更有信心了 —— 夢想確實正在靠近。」

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

2025 全球產品經理大會

8 月 15–16 日

北京·威斯汀酒店

2025 全球產品經理大會將匯聚互聯網大廠、AI 創業公司、ToB/ToC 實戰一線的產品人,圍繞產品設計、用戶體驗、增長運營、智能落地等核心議題,展開 12 大專題分享,洞察趨勢、拆解路徑、對話未來。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
旺仔小喬一覺醒來天塌了!掉粉30萬,連神秘的真容都被扒了個徹底

旺仔小喬一覺醒來天塌了!掉粉30萬,連神秘的真容都被扒了個徹底

木子愛娛樂大號
2025-07-22 16:43:37
美國通過“阻止‘武統’法案”:若動武,就公開中國精英在美財產

美國通過“阻止‘武統’法案”:若動武,就公開中國精英在美財產

頭條爆料007
2025-07-22 19:10:45
“黃毛男孩”曬北大通知書,因專業被群嘲:也就普通一本水平而已

“黃毛男孩”曬北大通知書,因專業被群嘲:也就普通一本水平而已

妍妍教育日記
2025-07-22 18:40:22
湘潭9歲網球女孩曬成“老抽色”走紅,爸爸:光線和背景問題,膚色健康,偶像是鄭欽文

湘潭9歲網球女孩曬成“老抽色”走紅,爸爸:光線和背景問題,膚色健康,偶像是鄭欽文

瀟湘晨報
2025-07-23 16:02:13
大風暴雨突襲,鄭州氣溫驟降10℃瞬間清涼

大風暴雨突襲,鄭州氣溫驟降10℃瞬間清涼

極目新聞
2025-07-23 21:05:11
上海申花“足協杯不要了”!特謝拉的點球成疑案:進還是沒進?

上海申花“足協杯不要了”!特謝拉的點球成疑案:進還是沒進?

足球大腕
2025-07-23 23:28:01
特朗普宣布與日本達成“史上最大”貿易協議!征收15%對等關稅,日本向美國投資5500億美元,美國獲90%的利潤

特朗普宣布與日本達成“史上最大”貿易協議!征收15%對等關稅,日本向美國投資5500億美元,美國獲90%的利潤

和訊網
2025-07-23 09:35:30
還是沒有熬過楊振寧!陪伴21年后,冷凍9顆卵子的翁帆痛苦嗎?

還是沒有熬過楊振寧!陪伴21年后,冷凍9顆卵子的翁帆痛苦嗎?

明月聊史
2025-07-17 15:29:09
德媒:一拜仁球探上周誤將自己的關注名單公開,其中包含15人

德媒:一拜仁球探上周誤將自己的關注名單公開,其中包含15人

懂球帝
2025-07-23 01:00:08
韋德力挺科比,他是歷史前三,沒水準的人,才會把科比放在第11

韋德力挺科比,他是歷史前三,沒水準的人,才會把科比放在第11

阿雄侃籃球
2025-07-24 00:00:38
為去中國化,多年前韓國把“漢城”改名首爾,如今他們后悔莫及

為去中國化,多年前韓國把“漢城”改名首爾,如今他們后悔莫及

贏梯
2025-06-20 19:10:18
不是想跳,是真沒活路了!53歲老板的絕望誰懂?員工:他是個好人

不是想跳,是真沒活路了!53歲老板的絕望誰懂?員工:他是個好人

夢史
2025-07-23 09:26:35
阿塞拜疆再出重拳:禁止使用俄語并售賣俄國商品

阿塞拜疆再出重拳:禁止使用俄語并售賣俄國商品

史政先鋒
2025-07-22 18:51:54
陳佩斯《戲臺》票房井噴,讓多少資方臉紅,黃渤這次又賭對了?

陳佩斯《戲臺》票房井噴,讓多少資方臉紅,黃渤這次又賭對了?

東方不敗然多多
2025-07-22 17:27:31
楊瀾:我與老公早已無愛,若繼續再在一起,對彼此都是很不公平的

楊瀾:我與老公早已無愛,若繼續再在一起,對彼此都是很不公平的

今墨緣
2025-07-22 15:41:02
云南高校在云南遇冷:農大缺額152人、師大缺72人、昆工缺69人!

云南高校在云南遇冷:農大缺額152人、師大缺72人、昆工缺69人!

凱旋學長
2025-07-23 21:52:37
張元英“被臭到捂鼻”上熱搜,網友:接機前請洗澡

張元英“被臭到捂鼻”上熱搜,網友:接機前請洗澡

韓小娛
2025-07-21 21:30:39
“社會性死亡!”撲小孩杜賓狗主人放出狠話,正臉卻被扒要涼涼了

“社會性死亡!”撲小孩杜賓狗主人放出狠話,正臉卻被扒要涼涼了

鋭娛之樂
2025-07-22 18:19:15
吃相太難看!全程戴面具開演唱會,票價比刀郎還高,誰給的自信

吃相太難看!全程戴面具開演唱會,票價比刀郎還高,誰給的自信

白面書誏
2025-07-21 21:40:58
突然上架!9.9 元兌美團 600 元年卡

突然上架!9.9 元兌美團 600 元年卡

黑貓科技迷
2025-07-23 18:17:16
2025-07-24 00:35:00
CSDN incentive-icons
CSDN
成就一億技術人
25804文章數 242100關注度
往期回顧 全部

科技要聞

別自嗨了!XREAL徐馳:AI眼鏡只有5歲智商

頭條要聞

印度、孟加拉關切雅魯藏布江下游水電站工程 中方回應

頭條要聞

印度、孟加拉關切雅魯藏布江下游水電站工程 中方回應

體育要聞

英格蘭最紅球星 也是加勒比島國驕傲

娛樂要聞

汪峰森林北同游日本 各帶各娃互不耽誤

財經要聞

律師解析娃哈哈遺產案:遺囑是最大變數

汽車要聞

德系大招放盡 場地極限測試全新奧迪A5L

態度原創

時尚
家居
游戲
公開課
軍事航空

搶戲《醬園弄》、尬演《長安荔枝》,雷佳音的舒適圈正在反噬

家居要聞

晨曦生活 明媚而放松

LPL第三階段:有驚無險,WBG三局戰勝WE

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

美國核彈頭重回英國牽動全球神經

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 双峰县| 天等县| 福海县| 石泉县| 邹城市| 宜丰县| 广东省| 南部县| 延寿县| 文化| 巴林右旗| 通辽市| 阳原县| 古浪县| 阿拉善右旗| 东乌珠穆沁旗| 荥经县| 永昌县| 光泽县| 石阡县| 葵青区| 公主岭市| 长葛市| 罗江县| 昂仁县| 沿河| 双辽市| 利津县| 沅江市| 田林县| 自治县| 金阳县| 巧家县| 府谷县| 淳化县| 西畴县| 凤山县| 泗水县| 凉城县| 新和县| 宜宾县|