成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在 Mac 下使用 Cython

huangjinnan / 2160人閱讀

摘要:摘要在下使用會碰到一些意外。本文就此簡單舉了一個例子來說明在中使用的正確姿勢。運行之接下來,我們來運行這個函數(shù),當(dāng)然是使用的方法。結(jié)束至此步驟全部完成本文只是給出了一些在上使用可能碰到的一些問題的解決方法。

摘要:在 Mac 下使用 Cython 會碰到一些意外。例如鏈接命令不一樣什么的。本文就此簡單舉了一個例子來說明在 Mac OS X 中使用 Cython 的正確姿勢。

安裝 Cython

首先,我們需要安裝 Cython。Cython 是一個 Python 的擴(kuò)展組件,可以將符合 Cython 語法的 Python 代碼翻譯成 C 語言代碼。如同在其他所有系統(tǒng)中安裝 Python 擴(kuò)展組件一樣,只需要一行命令即可。

pip install cython

當(dāng)然,前提是我們需要有 pip。不過對于玩 Python 的各位,想必 pip 是必不可少了啦,如果沒有的話……谷歌之后,馬上回來~~

編寫 Cython 程序

有了 Cython 之后,讓我們來編寫一個簡單的 a+b 函數(shù)好了。

# file: a_plus_b.pyx
def a_plus_b(int a, int b):
    cdef int c
    c = a + b
    return c

其中參數(shù)部分需要按照 C 語言的規(guī)范進(jìn)行聲明(似乎按照 Python 的規(guī)則直接寫也是可以的),代碼中的聲明需要添加 cdef

運行之

接下來,我們來運行這個函數(shù),當(dāng)然是使用 Cython 的方法。

pyx 轉(zhuǎn)換為 C

cython a_plus_b.pyx

此時會有 a_plus_b.c 生成。這個文件就是經(jīng)過 Cython 翻譯的代碼。

編譯 C 代碼為鏈接庫 so

此處代碼請看完下面解釋之后再執(zhí)行,否則會出錯 (:з」∠)

cc -c -fPIC -I/usr/local/include/python2.7 a_plus_b.c
cc -shared -lpython2.7 aa.o -o a_plus_b.so

其中第一行代碼中需要指定一個 include 文件 Python.h 的位置。這里我們采用的是路徑 /usr/local/include/python2.7,這是我們自己設(shè)置的軟鏈接。默認(rèn)情況下,Mac OS X 中 Python.h 文件的位置在一個類似于如下路徑的地方。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/

為了后續(xù)使用方便,我們建立一個軟連接。

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/ /usr/local/include/python2.7

這樣,我們第一行的命令就可以正確執(zhí)行啦~~執(zhí)行之后會生成 a_plus_b.o 文件。

第二行中需要指定鏈接的 Python 版本,即 -lpython2.7 參數(shù)。執(zhí)行之后會生成 a_plus_b.so 文件。

從 Python 中調(diào)用剛編譯的庫

此時,a_plus_b.so 中的函數(shù)已經(jīng)可以直接被 import。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import a_plus_b
print a_plus_b.a_plus_b(1, 2)

執(zhí)行這段代碼,會輸出 3。

結(jié)束

至此步驟全部完成~~

本文只是給出了一些在 Mac OS X 上使用 Cython 可能碰到的一些問題的解決方法。至于如何在 Cython 中使用 Python 庫以及如何調(diào)用 C 語言庫,詳見 Cython 三分鐘入門。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44173.html

相關(guān)文章

  • Cython 3.0 中文文檔校對活動 | ApacheCN

    摘要:整體進(jìn)度貢獻(xiàn)指南項目倉庫貢獻(xiàn)指南請您勇敢地去翻譯和改進(jìn)翻譯。然后回復(fù),注明章節(jié)號一定要留。二校對需要校對語法術(shù)語使用文檔格式如果覺得現(xiàn)有翻譯不好,重新翻譯也是可以的。三提交項目將譯文放在文件夾下請見入門指南。 整體進(jìn)度:https://github.com/apachecn/c... 貢獻(xiàn)指南:https://github.com/apachecn/c... 項目倉庫:https://...

    iamyoung001 評論0 收藏0
  • cython之a(chǎn)lways_allow_keywords

    摘要:最近有個同事編譯一個腳本后,腳本里面調(diào)用函數(shù)的地方出現(xiàn)了問題。這個報錯的意思是,這個不支持參數(shù),但是是支持這種特性的。特地去差了下文檔,確實如此在這里只要開啟選項,就可以解決問題。 TypeError 最近有個同事編譯一個腳本后,腳本里面調(diào)用函數(shù)的地方出現(xiàn)了問題。用一個簡短的例子說明下:py文件 a.py 內(nèi)容如下: def fn(a): print a fn(a=4) ...

    wind5o 評論0 收藏0
  • 4 個快速的 Python 編譯器 for 2018

    摘要:但是由于程序并沒有那么快,開發(fā)人員多年來創(chuàng)建了幾個的編譯器,包括和。在下面的細(xì)分中,所有的編譯器都針對進(jìn)行基準(zhǔn)測試。編譯器是系列的一部分,旨在作為的現(xiàn)代替代品。不僅僅是的編譯器,它是的超集,支持與的互操作性。 簡評:Python 和其他的解釋型語言一樣經(jīng)常被吐槽性能不行,所以開發(fā)人員為了提升性能創(chuàng)建了不少編譯器,本文則選取其中的四個做了基準(zhǔn)測試。 Python 其實是一種相當(dāng)快的語言,...

    YancyYe 評論0 收藏0
  • Python 代碼混淆和加密技術(shù)

    動機(jī) Python進(jìn)行商業(yè)開發(fā)時, 需要有一定的安全意識, 為了不被輕易的逆向. 混淆和加密就有所必要了.混淆 為了增加代碼閱讀的難度, 源代碼的混淆非常必要, 一個在線的Python代碼混淆網(wǎng)站. http://pyob.oxyry.com/同時需要注意的是, 這個混淆其實還是被很多人懷疑的, 因為即使混淆了, 也沒有改變代碼的結(jié)構(gòu). 這種方法只能防君子,不防小人所以, 必要的話, 在編程的時候...

    didikee 評論0 收藏0
  • 全網(wǎng)首份Python打包工具Pyinstaller實戰(zhàn)指南,如絲滑般體驗

    摘要:最好是客戶雙擊,完事兒。目前已經(jīng)兼容,以及和。一共會有個對象,分別是。,就是我們的工作目錄,存放我們的數(shù)據(jù)。編譯打包最后,我們執(zhí)行就好了。打包的可執(zhí)行文件會在里,中是一些打包時候需要的文件。輸出中最后有字樣,就算成功了。 showImg(https://img-blog.csdnimg.cn/20190303211533768.png?x-oss-process=image/water...

    caikeal 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<