3.8.3. Leçon d’intégration du fortran dans python via f2py¶
La commande f2py et le module associé permettent de convertir un code fortran en modules et fonctions python. Cela peut être utile pour deux raisons principales :
- Vous avec un code fortran complexe que vous ne voulez pas convertir en python.
- Vous voulez augmenter les performances d’un algorithme, notamment avec de la parallélisation.
Avec cette approche, vous pouvez donc utiliser du code fortran sans avoir à faire des appels système et passer par des fichiers intermédiaires.
Note
Notez cependand qu’une bonne utilisation de numpy
et scipy
permet
souvent d’obtenir des performances très élevées.
Voici un exemple minimal.
Fichier myfile.f90
:
subroutine myfunc(vari, varo, nx)
real(8),intent(in) :: vari(nx)
integer, intent(in) :: nx
real(8),intent(out) :: varo(nx)
varo = vari**2 + 3
end subroutine myfunc
Compilation et création du fichier mymodule.so
$ f2py -c -m mymodule myfile.f90
Utilisation (fixhier courses_f2py.py
) :
#!/usr/bin/env python
# -*- coding: utf8 -*-
"""De fortran à python avec f2py"""
# Importation et aide
import mymodule
help(mymodule)
print mymodule.myfunc.__doc__
# Utilisation
import numpy as N
a = N.arange(3.)
print mymodule.myfunc(a)