簡體   English   中英

Python:package 和編譯器有什么區別?

[英]Python: what is the difference between a package and a compiler?

我正在閱讀 Numba 的 wiki 頁面,它說 Numba 是一個“編譯器”。 但后來,它說要使用 Numba,你需要像 package 一樣導入它。 后來我查了一下如何使用 Numba,確實,你只需 pip 安裝它。

所以現在我很困惑。 我以為 Numba 是編譯器? 但它似乎像其他任何 package 一樣使用,如 numpy 或 pandas? 有什么不同?

Numba 被稱為“編譯器”,但您可以像模塊一樣導入它

編譯器是一個程序,它以人類可讀的形式輸入某些內容(通常是指定語言的程序),並以另一種更易於機器消化的形式輸出功能等效的 stream。 與任何其他轉換一樣,它作為命令行調用或 function 調用同樣可行。

只要它被正確地包裝在 package 中以供一般使用,將編譯器作為 Python package 交付是完全合理的。

這是否解決了困難?

從我在 Numba 文檔中閱讀的內容來看,它是一個 package,您將其導入到您的項目中,然后使用 Numba 裝飾器指示您希望在 JIT(即時)中編譯的代碼部分以優化它們。 就像下面的例子:

from numba import jit
import random

@jit(nopython=True)
def monte_carlo_pi(nsamples):
    acc = 0
    for i in range(nsamples):
        x = random.random()
        y = random.random()
        if (x ** 2 + y ** 2) < 1.0:
            acc += 1
    return 4.0 * acc / nsamples

monte_carlo_pi function 被調用時,Numba 將對其進行編譯以優化它,因此您無法執行編譯步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM