分享Cython安裝與使用入門經驗

Y2J
發布: 2017-04-17 17:05:47
原創
4778 人瀏覽過

一、Cython是什麼?

它是一個用來快速產生 Python擴充模組(extention module)的工具

它的語法是python語言語法和c語言語法的混血

他比swig更容易寫python的擴充模組

也許你會說swig可以直接透過c的頭檔產生擴充模組,但是swig對回呼函數的支援不是很好,

另外,如果用swig,很多情況下,你要寫額外的程式碼將輸入的參數轉換成python物件以及將輸出轉成python對象,例如如果封裝的一個C函數的參數是輸入輸出的話,又如如果C函數的參數中有回呼函數的話

而在Cython,C裡的類型,如int,float,long,char*等都會在必要的時候自動轉成python對象,或是從python對象轉成C類型,在轉換失敗時會拋出異常,這正是Cython最神奇的地方

另外, Cython對回呼函數的支援也很好。

##cython 在

linux

安裝

#1. 原始碼套件安裝:

[blueelwang@pythontab ~]$ wget https://pypi.python.org/packages/b7/67/7e2a817f9e9c773ee3995c1e15204f5d01c8da71882016cac10342ef031b/Cython-0.25.2.tar.gz
[blueelwang@pythontab ~]$ tar xzvf Cython-0.25.2.tar.gz
[blueelwang@pythontab ~]$ cd Cython-0.25.2
[blueelwang@pythontab ~]$ python setup.py install
登入後複製
2. pip套件安裝#
[blueelwang@pythontab ~]$ sudo pip install Cython --install-option="--no-cython-compile"
登入後複製

3. Ubuntu下安裝

[blueelwang@pythontab ~]$ sudo apt-get install cython
登入後複製

安裝後 輸入cython 即可驗證是否安裝成功

三、使用

1、編寫以.pyx為副檔名的cython程序,hello.pyx

def say_hello_to(name):
    print("Hello %s!" % name)
登入後複製

2、寫python程式setup.py

其目的是把hello.pyx程式轉換成hello.c ,並編譯成so檔

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("hello", ["hello.pyx"])]
setup(
  name = 'Hello world app',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)
登入後複製

3. 執行python程式

[blueelwang@pythontab ~]$ python setup.py build_ext --inplace
登入後複製

執行的結果會產生兩個檔案:hello.c 和hello.so( 用Py

Object

* 封裝好的檔案)

4. 用python呼叫hello.so,呼叫檔案為test.py

import hello
hello.say_hello_to("hi,cython!!")
登入後複製
cython的主要目的是:簡化python呼叫c語言程式的繁瑣封裝過程,提高python程式碼執行速度(C語言的執行速度比python快)

以上是分享Cython安裝與使用入門經驗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!