在CentOS系统上,Fortran与Python的结合可以通过以下步骤实现:
! file: inter.f90
module interpo
implicit none
contains
subroutine addsub(outdata,data1,data2)
implicit none
integer, intent(out) :: outdata
integer, intent(in) :: data1,data2
outdata = data1 + data2
end subroutine addsub
subroutine multisub(output,input,m,n)
implicit none
integer, optional, depend(input) :: m=shape(input,0)
integer, optional, depend(input) :: n=shape(input,1)
real(8), intent(in) :: input(m,n)
real(8), intent(out) :: output(m,n)
output = input * 10.
end subroutine multisub
end module interpo
f2py -c inter.f90 -m inter
这将生成一个名为inter.cpython-<version>-x86_64-linux-gnu.so
的文件,Python可以直接调用这个文件。
import inter
import numpy as np
# 测试第一个子程序
out1 = inter.interpo.addsub(8, 3)
print(out1)
# 测试第二个子程序
inp2 = np.random.rand(3, 3)
out2 = inter.interpo.multisub(inp2)
print(out2)
另一种方法是在Python中使用ctypes
库来调用Fortran编译的动态链接库。这适用于直接使用f2py生成的.so
文件,或者当你有特定的编译需求时。
ctypes
时,需要明确指定动态链接库的路径、名称和包含的子程序。通过上述步骤,你可以在CentOS系统上成功地将Fortran代码与Python集成,从而利用Fortran的高性能计算能力。