2

誰かがDjangoベースのプロジェクトを(たとえば共有オブジェクトライブラリに)pyrex(または同様のもの)でコンパイルし、Pythonで通常のDjangoプロジェクトを使用して柔軟性を維持できるかどうか疑問に思いました。

プロジェクトをapacheで使用できるようにする必要があるため、スタンドアロンのバイナリにコンパイルすることはできません。私の考えでは、これはlibsにコンパイルされ、これらのlibsはインタープリターに公開されるため、Pythonを使用したプロジェクトの現在の状態のように動作するはずです。できればCコードをたくさん書かずに:)

前もって感謝します。

4

1 に答える 1

7

Pyrexとその後継であるcythonは、Pythonと完全には互換性がありません。Pythonベースですが、むしろ別の言語です。

Djangoは非常に複雑なプロジェクトであり、実行するには厳密なPythonコンプライアンスが必要です-DjangoをcythonまたはPyrexで直接動作させるには、数か月の作業がなくても可能ではないかと思います-プロファイラーを使用して特定のボトルネックをネイティブコードに変換することはできますがはるかに少ない労力で(コア内の個々のdjangoモジュールをCythonで最適化されたものに置き換えることにより)

さらに、Pyrex / Cythonを使用した最適化は、それほど「無料」ではありません。Cythonで、コードを変更せずに単純な数値集約型コードを実行することで、約30%のスピードアップが可能ですが、スピードを大幅に上げるには、コードを一部の変数が静的に型付けされるように手動で調整しました。

一方、PypyでDjangoを実行してみてください-ここにいくつかのヒントがあります:http: //reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html

Pypyは非常に準拠したPythonインタープリターであり、Djangoコアはそれと連携することが知られています。ほとんどのワークロードでPythonのリファレンス実装(CPython)よりも数倍高速になるJustInTime変換アプローチを使用します。

于 2011-12-14T14:10:18.177 に答える