マルチプロセッシングのインスタンス メソッド Pool.map()
マルチプロセッシングの Pool.map() 関数を使用すると、同時タスク分割が可能になります。オブジェクト指向のシナリオでは、このアプローチが失敗することがあり、「マルチプロセッシング Pool.map() を使用している場合、
この問題は、マルチプロセッシングが必要なために発生します。プロセス共有のためにオブジェクトを pickle 化しますが、バインドされたメソッドは本質的に pickle 可能ではありません。この制限を克服するには、copy_reg モジュールを利用してインスタンス メソッドの pickling を有効にすることができます。
Steven Bethard が提案した効果的な方法の 1 つは、インスタンス メソッドのカスタム pickling ハンドラーを copy_reg に登録することです。このメソッドは、バインドされたメソッドを処理し、シリアル化可能な形式に変換できるカスタム Pickler を定義します。 unpickle 化すると、カスタム unpickler はインスタンス メソッドを元の状態に復元できます。
このアプローチを実装すると、マルチプロセッシングの機能を拡張してインスタンス メソッドを処理できるようになり、オブジェクト指向コードが効果的に活用できるようになります。同時処理。
以上がマルチプロセッシング Pool.map() で使用するインスタンス メソッドをピクルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。