マシン A でシリアライズし、マシン B で Python ラムダをデシリアライズしたいと思います。これには明らかな問題がいくつかあります。
- pickle モジュールはコードをシリアライズまたはデシリアライズしません。クラス/メソッド/関数の名前のみをシリアル化します
- Google で見つけた回答のいくつかは、低レベルのマーシャル モジュールを使用してラムダの func_code 属性をシリアル化することを示唆していますが、逆シリアル化されたコード オブジェクトから関数オブジェクトを再構築する方法を説明していません。
- marhshal(l.func_code) は、ラムダに関連付けられたクロージャーをシリアル化しません。これにより、特定のラムダがクロージャーを本当に必要とする時期を検出し、クロージャーを使用するラムダをシリアル化しようとしていることをユーザーに警告するという問題が発生します。
したがって、私の質問:
- デシリアライズされた (デマーシャリングされた) コード オブジェクトから関数を再構築するにはどうすればよいでしょうか。
- 関連するクロージャーがないと、特定のラムダが適切に機能しないことをどのように検出しますか?