ctypes、boost.pythonなどを使用してPythonにC++コードを埋め込むと、Pythonアプリケーションが高速になりますか?
pygtk でアプリケーションを作成していて、高速である必要があるいくつかの関数が必要だとします。では、アプリケーションの特定のタスクに c++ を使用すると、メリットがありますか?
また、Python コードを高速化するための他のオプションは何ですか?
コードのパフォーマンスが重要な部分を C++ で書き直すことは、1 つのオプションになる可能性があります。これを効果的に行うには、まずボトルネックがどこにあるかを理解する必要があります。これを行う最善の方法は、最初に純粋な Python ですべてを記述し、次にプロファイルを作成することです。
別のオプションは、を使用することPyPy
です。
最後に、ボトルネックが数値計算であることがわかった場合NumPy
は、一見の価値があります。
たとえば、コードが I/O バウンドであることが判明した場合、上記のオプションはどれもあまり役に立たないことに注意してください。
状況によりますが、決定的な答えはありません。C++ で不適切なコードを作成すると、適切に作成された Python コードよりもさらに遅くなる可能性があります。
高品質の C++ コードを記述できると仮定すると、パフォーマンスが重要な部分で最大 20 倍のスピードアップが期待できます。
他の答えが言うように、NumPy は数値のボトルネックに適したオプションです (ループではなく行列演算で考える場合)。SciPy には weaver が付属しており、インライン C++ やその他の機能を埋め込むことができます。