xiaohong000 2014-05-29
详细请点击:http://www.verydemo.com/demo_c122_i33874.html
上篇里面写的是python调用c,对速度又很大的提升。
今天无聊又写了个python调用fortran的来比较比较。
首先,编写名为test_f.f90的fortran文件:(插入代码居然没有fortran)
!subroutine subroutine is_prime(n,value) implicit none integer::n,i,value !f2py intent(in)::n !f2py intent(out)::value if(mod(n,2)==0) then value=0 return else do i=3,int(sqrt(float(n)))+1,2 if(mod(n,i)==0) then value=0 return end if end do end if value=1 end subroutine
编译fortran文件得到test_f90.so文件:
....................................................................
f2py -m test_f -c test_f.f90
最后编写测试文件:
import test_f def test_f90(): ti=time.time() count=0 for i in xrange(3,10000000): if test_f.is_prime(i): count+=1 return "test_f90: time=%s ;count=%s"%(time.time()-ti,count)
测试判断一千万个素数:
#'test_c: time=14.7924110889 ;count=664578'
#'test_f90: time=6.10868906975 ;count=664578'
#可以看出调用.f90的速度是.c的2倍还多。
#并且调用.f90也相对简