[解決済み] joblibとpickleの使用例の違いは何ですか?
2022-03-13 14:41:29
質問
背景 scikit-learnを始めたばかりで、ページの下のほうにある joblibとpickleの比較 .
joblibのpickleの置き換え(joblib.dump & joblib.load)を使う方が面白いかもしれません、これはビッグデータに対してより効率的ですが、ディスクにしかpickleできず、文字列にできないのです
Pickleに関するQ&Aを読みました。 Pythonにおけるpickleの一般的な使用例 このコミュニティで、joblibとpickleの違いを共有できないでしょうか? どんな時にどちらかを使うべきですか?
どのように解決するのですか?
- 大きなnumpy配列では、通常joblibが大幅に高速化される これは、numpyデータ構造の配列バッファに対して特別な処理を行うためです。実装の詳細については、以下のサイトを参照してください。 ソースコード . また、zlibやlz4を使ってピックリング中にその場でデータを圧縮することも可能です。
- joblib はまた、メモリマッピングを可能にする を読み込む際に、joblib-pickled numpy 配列のデータバッファを読み込むので、プロセス間でメモリを共有できます。
- 大きなnumpy配列をpickleしない場合、特に小さなpythonオブジェクトの大きなコレクションでは、通常のpickleが著しく速くなることがあります。 (標準ライブラリのpickleモジュールがCで実装されているのに対し、joblibは純粋なpythonだからです(例:strオブジェクトの大きなdict)。
- PEP 574 (Pickle protocol 5) が Python 3.8 でマージされたので、標準ライブラリを使って大きな numpy 配列を pickle するのが(メモリ的にも CPU的にも)非常に効率的になりました。この文脈での大きな配列とは、4GB以上のことを指します。
-
しかし
Python 3.8では、numpyの配列がネストされたオブジェクトを読み込むためにjoblibはまだ有用である。
を使用してメモリマップドモードで
mmap_mode="r"
.
関連
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] virtualenvで異なるバージョンのPythonを使用する
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] Pythonが解釈される場合、.pycファイルとは何ですか?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] pickleを使ってdictを保存するにはどうしたらいいですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python string splicing.join()とsplitting.split()の説明
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Python入門 openを使ったファイルの読み書きの方法
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] Pythonにおけるpickleの一般的な使用例