一、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对回调函数的支持也很好。

总之,如果你有写python扩展模块的需求,那么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.pyxdef 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( 用PyObject* 封装好的文件)

4. 用python调用 hello.so,调用文件为test.pyimport hello

hello.say_hello_to("hi,cython!!")

cython的主要目的是: 简化python调用c语言程序的繁琐封装过程,提高python代码执行速度(C语言的执行速度比python快)

cython安装ubuntu_Cython安装与使用入门相关推荐

  1. macos安装vscode_VS Code 代码编辑器入门指南:核心组件与概念

    作者:思考问题的熊 写在前面 如果当电脑只能装一个软件还需要尽量不影响日常学习工作时,不知道你的选择会是什么.我把这个看似「荒诞」的问题理解为「All-in-One」的升级版拷问. 这个问题陪伴了我很 ...

  2. postman电脑版无法安装_Postman 安装及使用入门教程

    安装 本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 点击那个灰灰色的「 ...

  3. Python零基础入门(零)——Anaconda安装(python安装)和使用

    Anaconda是一个科学计算环境,当在电脑上安装好Anaconda3以后,就相当于安装好了Python,还有一些常用的库,如numpy,scrip,matplotlib等库. 1.下载 anacon ...

  4. robotframework安装_Robot Framework零基础入门教程

    1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ...

  5. Maven的安装、配置及使用入门

    原文地址为: Maven的安装.配置及使用入门 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联 ...

  6. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...

  7. 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

    2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

  8. VBoxvmware虚拟机安装Linux及Linux基础入门学习

    VBox&vmware虚拟机安装Linux及Linux基础入门学习 通过VMware workstation安装Linux 在安装虚拟机之前,我特意上网搜索了一下目前常使用的虚拟机软件,了解了 ...

  9. Windows环境 下载、安装、使用 RabbitMQ_(入门试炼_第1篇)

    文章目录 一.软件介绍及下载 二.安装Erlang 2.1. 双击运行 2.2. 新建一个系统变量 2.3. 将新建的系统变量添加在Path中: 2.4. 打开cmd 2.5. 验证 三.安装Rabb ...

  10. 易优cms 安装常见问题汇总 Eyoucms快速入门

    安装报错,请仔细核对数据库账号和密码 答:请检查填写的数据库链接信息是否正确,此问题都是填写的数据库地址,账号,密码不正确导致的 本地测试正常,放到虚拟主机就这样了 安装的时候出现这个: 虚拟主机HP ...

最新文章

  1. 正则:匹配一个汉字姓名
  2. VR如何巧妙填补传统数据视觉化的漏洞
  3. LSTM如何解决梯度消失或爆炸的?
  4. IAR建立stm32工程
  5. php mysql 云虚拟机_虚拟机+apache+php+mysql 环境安装配置
  6. 简单的字谜游戏--可扩展--2015年7月25日14:58:00V1.1版
  7. 不小心删除了系统的GRUB怎么办
  8. loadrun Java 添加参数_loadrunner手动关联参数化问题总结
  9. 常用功能-删除功能测试点
  10. 通过JDBC和Hibernate对Clob和Blob的操作
  11. [转载] Python的exec
  12. Android源码学习之接着浅析SystemServer
  13. 网络安全笔记-17-单臂路由
  14. 嵌入式Linux开发常用命令总结
  15. vim tutorial 101 hacks(一)
  16. WPS Word二级标题自动编号,本来应该是2.1,可是却变成1.3,怎么办?
  17. 牛市股票还会亏钱? 外观模式
  18. SSD行业梳理之SSD主控芯片(转)
  19. 微信小程序集成WeUI组件库
  20. wma转mp3怎么弄_如何使用在线转换器将MP3格式转换为wma格式

热门文章

  1. win7无法打开计算机共享文件夹,Win7共享文件夹无法访问怎么办
  2. Urchin.exe使用说明
  3. Python+selenium实现医院自动挂号
  4. JS中使用java方法与数据库交互
  5. “中国会员电商第一股”云集的反爬虫攻防战 | 产业安全专家谈
  6. jquery的事件命名空间详解
  7. 独家对话英伟达首席科学家:解码AI芯片战局
  8. struts2+quartz定时任务
  9. 数据仓库指标体系搭建实战
  10. 服务器主机自建的私有云盘,360路由器搭建私有云主机(360路由器加硬盘自建nas)...