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)