最近、「私たちの C++ ライブラリをクラウドで動作させる」よう依頼されました。基本的に、lib はコンピューター集約型 (価格の計算) であるため、理にかなっています。MRJob で MapReduce を使用することを念頭に置いて、Python バージョンを作成するための SWIG インターフェイスを作成しました。ファイル内のオブジェクトをシリアル化し、マッパーを使用して逆シリアル化し、価格を計算したいと考えていました。
例えば:
class MRTest(MRJob):
def mapper(self,key,value):
obj = dill.loads(value)
yield (key, obj.price())
しかし、ディルが SWIG 拡張機能を処理できないように見えるため、今は行き止まりになっています。
PicklingError: Can't pickle <class 'SwigPyObject'>: it's not found as builtins.SwigPyObject
これを適切に機能させる方法はありますか?