Repolode
cloudpipe

cloudpipe/cloudpickle

Pythonのpickleを拡張し、lambdaや対話環境で定義した関数・クラスをシリアライズして、リモートワーカーへコードを送信できます。

スター
1,947
フォーク
212
未解決の Issue
124
最終コミット
先月

これは何?

cloudpickleは、標準のpickleモジュールでは扱えない構造もシリアライズできるPythonライブラリです。スクリプト、シェル、Jupyter notebookなどの__main__モジュールで定義したlambda関数や関数、クラスをシリアライズできます。

主な用途はクラスタコンピューティングです。Pythonコードをネットワーク経由でリモートホスト(多くの場合、データの近くにあるホスト)へ送り、実行できます。関数をモジュールへの参照としてpickle化する代わりに、cloudpickleでは値としてシリアライズできます。また、バージョン2.0.0以降では、開発者がモジュールを明示的に値によるシリアライズの対象として登録できるため、ワーカーにそのモジュールをインストールしておく必要がありません。

シリアライズしたデータの交換は同じPythonバージョン間に限られ、長期保存はサポートされていません。unpickle時には任意のコードが実行される可能性があるため、信頼できるソースからのデータのみを読み込んでください。

主な機能

  • 01lambda関数や対話環境で定義した関数・クラスをシリアライズできます。
  • 02関数やクラスを参照ではなく値としてpickle化できます。
  • 03register_pickle_by_valueを使って、値によるシリアライズの対象となるモジュールを登録できます。
  • 04標準のpickleインターフェースを拡張する形で、dumpsとloadsを利用できます。

ユースケース

  • 分散コンピューティングフレームワークで、Python関数をリモートワーカーへ送信する。
  • 並列処理ジョブにlambdaやノートブックで定義した関数を渡す。
  • 再インストールせずにワーカー上のコードを更新する必要があるモジュールを開発する。

クイックスタート

  1. 1

    PyPIからcloudpickleをインストールする

    pip install cloudpickle

使う前に知っておきたいこと

  • まったく同じPythonバージョン間でのみオブジェクトを送信できます。
  • 長期的なオブジェクトの保存には対応していません。
  • pickleの読み込みは任意のコードを実行する可能性があるため、信頼できるソースからのデータのみを読み込んでください。
  • インポート可能なモジュールの値によるシリアライズは実験的な機能です。

トピック

よくある質問

cloudpickle とは?
Pythonのpickleを拡張し、lambdaや対話環境で定義した関数・クラスをシリアライズして、リモートワーカーへコードを送信できます。 cloudpickleは、標準のpickleモジュールでは扱えない構造もシリアライズできるPythonライブラリです。スクリプト、シェル、Jupyter notebookなどの__main__モジュールで定義したlambda関数や関数、クラスをシリアライズできます。
cloudpickle は無料で使えますか?ライセンスは?
cloudpickle は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
cloudpickle は今もメンテナンスされていますか?
半年以内に更新あり。cloudpickle の最終コミットは 2026年9月10日 です。
cloudpickle は何に使えますか?
分散コンピューティングフレームワークで、Python関数をリモートワーカーへ送信する。 並列処理ジョブにlambdaやノートブックで定義した関数を渡す。 再インストールせずにワーカー上のコードを更新する必要があるモジュールを開発する。
cloudpickle のインストール方法は?
PyPIからcloudpickleをインストールする: pip install cloudpickle
cloudpickle はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/cloudpipe/cloudpickle

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト