Pythonコードを書くとき、私の典型的なワークフローは、インタラクティブプロンプトを使用して次のようなことをすることです
write function
repeat until working:
test function
edit function
すべてが問題ないことを確認したら、コードを非対話モードで実行し、結果を収集します。
関数の実行が遅すぎる場合があり、最適化する必要があります。
これらの遅い関数を最適化するために cython を使用することに興味がありますが、関数を実行し、変更を加え、再度実行するというインタラクティブなワークフローを維持したいと考えています。
これを行う簡単な方法はありますか?
これまでのところ、cython 関数を別のモジュール「my_functions.pyx」に入れてみました。
def fun1(int x):
return x + 130
def fun2(int x):
return x / 30
次に実行中(インタラクティブプロンプトで)
import pyximport; pyximport.install()
import my_functions as mf
mf.fun1(25)
これは初めて機能しますが、cython 関数に変更を加えて、同じ対話型セッションで再読み込みしたいと考えています。
ランニング
import my_functions as mf
機能をまったく更新しません。そして走っている
reload(mf)
エラーが発生します: my_functions という名前のモジュールはありません
機能する唯一の方法は、現在のセッションを終了し、ipython を再起動して、モジュールをもう一度インポートすることです。しかし、この種のことは、インタラクティブに実行する利点を台無しにします。
cython を使用して対話的に関数を最適化するより良い方法はありますか?
そうでない場合は、cython を使用してコードを最適化する他の方法を説明できますか?
どんな助けでも大歓迎です。