日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

运行的Cython的3种方法

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运行的Cython的3种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


運行條件: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种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。