執行的Cython的3種方法

2021-08-10 18:52:09 字數 2359 閱讀 9496

執行條件:python2.7

第一種:

fib.pyx

def fib(long n):

'''returns the nth fibonacci number.'''

cdef long a=0, b=1, i

for i in range(n):

a, b = a + b, a

return 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, i

for i in range(n):

a, b = a + b, a

return 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 math

def great_circle(float lon1,float lat1,float lon2,float lat2):

cdef float radius = 3956.0

cdef float pi = 3.14159265

cdef float x = pi/180.0

cdef float a,b,theta,c

a = (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的第一次載入

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

CRC的3種方法

一.crc16演算法 首先在原始檔標頭檔案加入錶值 cpp view plain copy print?crc16碼表 static word const wcrc16table 256 crc16碼表 static word const wcrc16table 256 然後在檔案中加入下列函式 c...

python中執行命令的3種方法小結

目前我使用到的python中執行cmd的方式有三種 1.使用os.system cmd 特點是執行的時候程式會打出cmd在linux上執行的資訊。import os os.system notepad 2.使用popen模組產生新的process 現在大部分人都喜歡使用popen。popen方法不會...

PHP定時執行任務的3種方法詳解

php定時執行的三種方式實現 具體實現 1 windows計畫任務 php很少在win伺服器上跑,具體實現也不再深究,看網上實現的原理大概是寫bat指令碼,然後讓window任務新增執行這個bat指令碼。2 linux 的指令碼實現 這裡主要使用到crontab這個命令,使用方式 複製 如下 cro...