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

#


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部