SymPyのautowrapモジュールのufuncify
ツールを使用して2進化された関数をシリアル化または保存する方法はありますか?sympyのufuncify-ied関数をシリアル化する方法はありますか?
dill
:How to serialize sympy lambdified function?を使用して解決策がありますが、これはlambdified関数でのみ機能します。
はここで説明するために、最小限の作業例です:
>>> import pickle
>>> import dill
>>> import numpy
>>> from sympy import *
>>> from sympy.utilities.autowrap import ufuncify
>>> x, y, z = symbols('x y z')
>>> fx = ufuncify([x], sin(x))
>>> dill.settings['recurse'] = True
>>> dill.detect.errors(fx)
pickle.PicklingError("Can't pickle <ufunc 'wrapper_module_0'>: it's not found as __main__.wrapper_module_0")
動機:I持っているいくつかの50百万文字-長い私がスピードアップしたい SymPy表現。 ufuncify
は素晴らしく機能します(lambidfy
単独では3桁の改善)が、それぞれの表現にはufuncify
まで3時間かかります。私は随時、ufuncify
が付いている表現を利用できるようにしたいと考えています。 更新:コンピュータがスリープ状態になって、私のPythonカーネルが壊れてしまったので、2進化された関数を回復するのに〜10時間待つ必要があります。