まったく新しいソリューションに対する答えが欠けていることに気づきました。コードでNumpyが使用されている場合、Pythranを試すことをお勧めします。
http://pythran.readthedocs.io/
私が試した機能については、Pythranは非常に良い結果を出します。結果として得られる関数は、書かれたFortranコードと同じくらい高速(またはわずかに遅い)で、(かなり最適化された)Cythonソリューションよりも少し高速です。
Cythonと比較した場合の利点は、Numpy用に最適化されたPython関数でPythranを使用するだけでよいことです。つまり、ループを展開してループ内のすべての変数の型を追加する必要がありません。Pythranは、コードの分析に時間がかかるため、での操作を理解していnumpy.ndarray
ます。
また、Numbaやジャストインタイムコンパイルに基づく他のプロジェクト(私の知る限り)では、ループを拡張して本当に効率的にする必要がある場合と比較して、これは大きな利点です。そして、ループを含むコードは、CPythonとNumpyだけを使用すると非常に非効率になります...
Pythranの欠点:クラスがない!しかし、本当に最適化する必要がある関数だけをコンパイルする必要があるので、それほど煩わしくはありません。
別のポイント:Pythranは、OpenMP並列処理を(非常に簡単に)よくサポートしています。しかし、mpi4pyはサポートされていないと思います...