6
私は関数fun(f, x, y)
を持ちます。ここで、xとyは数字で、fは"1/x ** 2 + y"
のような関数を指定する文字列です。Pythonはeval関数を保存します
f
を数百万回使用したいと考えており、それぞれの使用の間にx
とy
という値が変わります。
したがって、毎回関数の値を計算するのではなく、eval(f)
を呼び出すとかなりの時間がかかります。 (私の測定したケースで約50倍)
f
この機能を保存する方法はありますか?eval
を一度呼び出すだけです。
PS。ここではeval
の安全性については言及していませんが、私はそれを認識していますが、このコードは第三者が実行する場所ではなく、私の質問にも関係しません。
なぜ関数を文字列として格納する必要がありますか? –
ユーザーが入力します。 – Torn
もう一つの選択肢は、あなたの式をコードオブジェクトにプリコンパイルすることですが、Jean-Françoisの手法はほぼ2倍の速さです。 –