运行条件:python2.7

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第一种:

fib.pyx

def fib(long n):'''Returns the nth Fibonacci number.'''cdef long a=0, b=1, ifor i in range(n):a, b = a + b, areturn a

test.py

import sys
reload(sys)
sys.setdefaultencoding('utf8')
import pyximport; pyximport.install()import fib
print fib.fib(15)

运行方法:

python test.py

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二种

fib.pyx

def fib(long n):'''Returns the nth Fibonacci number.'''cdef long a=0, b=1, ifor i in range(n):a, b = a + b, areturn a

setup.py

#!/usr/bin/python
#-*-coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from distutils.core import setup
from Cython.Build import cythonize
#cythonize:编译源代码为C或C++,返回一个distutils Extension对象列表
setup(ext_modules=cythonize('fib.pyx'))

test.py

from fib import fib
print fib(9)

运行方法:

python setup.py build_ext --inplace
python test.py

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第3种

c1.pyx

import mathdef great_circle(float lon1,float lat1,float lon2,float lat2):cdef float radius = 3956.0cdef float pi = 3.14159265cdef float x = pi/180.0cdef float a,b,theta,ca = (90.0-lat1)*(x)b = (90.0-lat2)*(x)theta = (lon2-lon1)*(x)c = math.acos((math.cos(a)*math.cos(b)) + (math.sin(a)*math.sin(b)*math.cos(theta)))return radius*c

test.py

#!/usr/bin/env python
#encoding: utf-8
import sys   #引用sys模块进来,并不是进行sys的第一次加载
reload(sys)  #重新加载sys
sys.setdefaultencoding('utf8')  ##调用setdefaultencoding函数
import timeit
from c1 import great_circle
num=10#表示运行多少次
# t = timeit.Timer("c1.great_circle(%f,%f,%f,%f)" % (lon1,lat1,lon2,lat2),"import c1")
t = timeit.Timer("c1.great_circle(%f,%f,%f,%f)" % (16,124,76,173),"import c1")
print "Cython function (still using python math)", t.timeit(num), "sec"

运行方法:

cython c1.pyx
gcc -c -fPIC -I/usr/include/python2.7/ c1.c
gcc -shared c1.o -o c1.so
python test.py

运行的Cython的3种方法相关推荐

  1. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  2. 转:让程序只运行一个实例的四种方法

    先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...

  3. 解决C#程序只允许运行一个实例的几种方法详解

    解决C#程序只允许运行一个实例的几种方法详解 参考文章: (1)解决C#程序只允许运行一个实例的几种方法详解 (2)https://www.cnblogs.com/randyzhuwei/p/5403 ...

  4. linux启动sh文件命令,Linux 运行 .sh 文件的两种方法

    Linux 运行 .sh 文件的两种方法 文章作者:网友投稿 发布时间:2010-06-15 13:31:16 来源:网络 一个中等水平的Linux用户一定少不了经常执行.sh文件,当然了,你可以在图 ...

  5. python运行方法_python运行py文件的几种方法

    有时候我们在进行python编程的时候,想运行py文件,怎么运行呢,下面来分享一下方法 工具/原料 python 运行py文件的几种方法 方法一:通过命令行窗口运行 1 第一步我们首先复制一下py文件 ...

  6. 以管理员身份运行cmd有哪几种方法

    描述 除了右键"以管理员身份运行",还有哪几种方法,能够以管理员身份启动cmd 方式一:右键"以管理员方式运行" 方式二:powershell命令 Start- ...

  7. delphi 只允许运行一个实例的三种方法《转》

    一.创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1UsesWindows,Form,FrmMain in 'FrmMain.pas' {MainForm} ...

  8. java 运行main_使用maven运行Java Main的三种方法解析

    maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compile来完成 ...

  9. java main 运行_使用maven运行Java Main的三种方法解析

    导读热词 maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compi ...

最新文章

  1. 社区v2022.3版上线:发帖、看直播、评论体验升级,并支持机构号申请
  2. love2d教程8--动画
  3. 程序员,想要彻底弄懂Redis,这15点你一定要明白~(纯干货)
  4. 如何将两个DateTimePicker的日期和时间组合成一个值
  5. 计算机系统账户被锁定,帐号已经被系统锁定是什么意思
  6. commons fileupload的DiskFileItemFactory
  7. android studio布局显示图片,Android Studio 使用ImageView时不显示布局
  8. VS C++ memcpy() 用于double、int、结构体
  9. 兄弟dcp9020cdn手册_兄弟Brother DCP-9020CDN 驱动
  10. 涉密计算机病毒库升级管理,涉密计算机管理制度.doc
  11. 零信任网络ZTNA及SDP概念理解
  12. 两个网段共享打印机_不同ip段共享打印机设置方法
  13. celery使用post方法解决方案
  14. 大数定理和中心极限定理的通俗理解。
  15. 网络基础---广域网技术
  16. 蜜罐天堂Honeydrive的部署和Dionaea的试运行
  17. Swift 周报 第六期
  18. 华为手环b6可以升级鸿蒙,华为手环b6怎么样 配置和操作体验升级
  19. 暴雪战网服务器维护时间,暴雪战网登录不上去2021
  20. 无法访问局域网内打印机解决方法

热门文章

  1. 《那些年啊,那些事——一个程序员的奋斗史》——42
  2. asp.net表单提交方法GET\POST
  3. 模拟3个人排除买票,每人买1张票。售货员只有1张五元的钱,电影票5元一张
  4. python递归函数的意思_Python 递归函数
  5. 如何在vue中使用sass
  6. PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP
  7. linux初始化root密码
  8. VR创投寻鹰会,一场深圳VR行业人的大聚会
  9. 28.Node.js 函数和匿名函数
  10. MAC chrome浏览器 adobe flash player不是最新版本提示 的解决方案