cython 安装升级_Cython教程:一站式指南

本文按照工具书逻辑罗列了Cython语法,并总结了我工作中的编程经验。对于一些常见问题给出了一些”非专业“解决办法(不知道为啥能解决,但是能解决)。由于不是科班出身,班门弄斧还请见谅,大佬们发现啥错误欢迎在下方评论,不定期修改,不定期增加内容。下面进入主题:

Cython:疑问篇

问题一:为什么要用CythonPython编写数值计算程序用到了大量for-loop,并且这些loop无法用数组型语法替代(即不能通过Numpy、Cuda等库提升速度)。

为什么不考虑使用pypy和numba?在我做过的测试中,pypy的性能提升弱于精心编写的Cython程序,并且对开源库支持有限(如Numpy、Matplotlib)。在我做过的测试中,Numba的 @jit 加速效果不稳定(升级代码会导致加速效果下降,原因未知)且性能提升弱于精心编写的Cython程序。此外,Numba的编译在程序运行后开始的,Cython一次编译完可重复使用。(暂不清楚有没有预先编译好的功能)

为什么不考虑用C和C++编写好模块然后用python调用?答案-->时间成本。如果没学过这两个语言且没有编程基础,解决问题的大部分时间都会花在语言上。C和C++各有优势,C倾向于过程,C++倾向于对象,而cython既能实现过程加速也能用类python语法完胜面向对象编程。(当然在一些细枝末节的事上,Cython肯定比不上C和C++)

问题二:使用Cython要储备好哪些知识如果只会Python一门编程语言,不建议直接用Cython,不然很多问题没有解决思路(当然如果你能耐心看完这篇文章可以省很多事)。较好的顺序是先看C基础(至少看完循环、条件分支与函数),然后学习Cython,这样应用时的效率会高很多。

Cython:编译流程在项目文件夹下新建一个后缀名为.pyx的文件即Cython文件,如果有写好的python代码可以把代码先复制过去。

在项目文件夹下新建一个名为setup.py的python文件,在里面敲好如下代码:

import numpy as np

# 不用numpy不加这行

from distutils.core import setup

# 必须部分

from distutils.extension import Extension

# 必须部分

from Cython.Distutils import build_ext

#

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值