"Pipeline" API from Quantopian/Ziplineには非常に奇妙なパターンが見つかりました。CustomFactor
クラスがあり、独自のFactorモデルを実装するときにはcompute()
メソッドをオーバーライドします。Quantopian/Zipline:パイプラインパッケージの奇妙なパターン
compute()
の署名がある:、パラメータ「アウト」の次のコメントで:assets
と同じ形状の
出力アレイ。
compute
は、希望の戻り値をout
に書き込む必要があります。
機能は、単に代わりに入力パラメータへの書き込みの出力配列を返すことができなかった理由を私は尋ねられたとき、私は次のような答え受け取っ:APIは、出力配列が返されることを必要とした場合、」
をcompute()によって、実際の出力バッファに配列のコピーを作成することになり、余分なコピーが不必要に作成されることになります。私は、彼らがそうすることに終わる理由を理解することはできない
...明らかにPythonで値渡しについて何ら問題はありませんし、不必要なデータをコピーするの危険性はありません。これは、彼らがコードに人を推薦している実装の一種であるので、これは本当に痛いです:
def compute(self, today, assets, out, data):
out[:] = data[-1]
だから私の質問は、なぜそれが単純になることができませんでしたされています
def compute(self, today, assets, data):
return data[-1]