ホームページ >バックエンド開発 >Python チュートリアル >マルチプロセッシングで関数をピクルできないのはなぜですか?
マルチプロセッシング エラー: 「Pickle
コードで " が発生しましたPicklingError: Pickle できません
Pickle 階層について
Python の pickle メカニズムにより、後で逆シリアル化するためにオブジェクトをバイト ストリームにシリアル化できます。ただし、すべてのオブジェクトを pickle 化できるわけではありません。これは、pickle 関数が関数のグローバルにアクセスする必要があり、別の関数内で定義されている場合にはアクセスできないためです。 class.
コードの状況
関数がトップレベルで定義されている間、関数は、そうでない可能性のある他の関数を呼び出します。これにより、再帰的な依存関係が作成され、トップレベル関数のピクルスが不可能になる可能性があります。
解決策: 関数定義を移動します
この問題を解決する鍵は、ピクルしようとしている関数がモジュールのトップレベルで定義されていることを確認することです。必要に応じて、関数の定義をクラスまたは他の関数の外に移動します。
例を示します:
# Original code class Foo: @staticmethod def work(self): pass # Updated code def work(foo): foo.work()
まとめ
By酸洗いプロセスとその制限を理解すると、関数の酸洗いに関連するエラーを回避できます。マルチプロセッシングを使用するときに確実にピクルスを成功させるために、必ずモジュールのトップレベルで関数を定義してください。
以上がマルチプロセッシングで関数をピクルできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。