タグ付けされた質問 「pickle」

Pythonのオブジェクトシリアル化モジュール。このタグをPythonタグと一緒に使用して、Pickleでのオブジェクトの保存またはロードに関する質問をします。


8
PythonマルチプロセッシングPicklingError:<type 'function'>をピクルできません
簡単な例ではエラーを再現できず、コードが複雑すぎて投稿できません。通常のPythonではなくIPythonシェルでプログラムを実行すると、うまくいきます。 この問題に関する以前のメモを調べました。それらはすべて、クラス関数内で定義された関数を呼び出すためにプールを使用することによって引き起こされました。しかし、これは私には当てはまりません。 Exception in thread Thread-3: Traceback (most recent call last): File "/usr/lib64/python2.7/threading.py", line 552, in __bootstrap_inner self.run() File "/usr/lib64/python2.7/threading.py", line 505, in run self.__target(*self.__args, **self.__kwargs) File "/usr/lib64/python2.7/multiprocessing/pool.py", line 313, in _handle_tasks put(task) PicklingError: Can't pickle &lt;type 'function'&gt;: attribute lookup __builtin__.function failed 何か助けていただければ幸いです。 更新:私が漬け込む機能は、モジュールのトップレベルで定義されています。ネストされた関数を含む関数を呼び出しますが。つまり、ネストされた関数を持つf()呼び出しをg()呼び出し、私はを呼び出しています。、、すべてのトップレベルで定義されています。私はこのパターンでより簡単な例を試しましたが、それはうまくいきます。h()i()pool.apply_async(f)f()g()h()

2
pickle.dumpの使用-TypeError:バイトではなくstrでなければなりません
python3.3を使用していますが、単純な辞書をpickle化しようとすると、不可解なエラーが発生します。 これがコードです: import os import pickle from pickle import * os.chdir('c:/Python26/progfiles/') def storvars(vdict): f = open('varstor.txt','w') pickle.dump(vdict,f,) f.close() return mydict = {'name':'john','gender':'male','age':'45'} storvars(mydict) そして私は得る: Traceback (most recent call last): File "C:/Python26/test18.py", line 31, in &lt;module&gt; storvars(mydict) File "C:/Python26/test18.py", line 14, in storvars pickle.dump(vdict,f,) TypeError: must be str, not bytes


12
マルチプロセッシングPool.map()を使用すると、<type 'instancemethod'>をピクルできません
multiprocessingのPool.map()機能を使用して、作業を同時に分割しようとしています。次のコードを使用すると、正常に動作します。 import multiprocessing def f(x): return x*x def go(): pool = multiprocessing.Pool(processes=4) print pool.map(f, range(10)) if __name__== '__main__' : go() ただし、よりオブジェクト指向のアプローチで使用すると、機能しません。表示されるエラーメッセージは次のとおりです。 PicklingError: Can't pickle &lt;type 'instancemethod'&gt;: attribute lookup __builtin__.instancemethod failed これは、以下が私のメインプログラムである場合に発生します。 import someClass if __name__== '__main__' : sc = someClass.someClass() sc.go() そして以下は私のsomeClassクラスです: import multiprocessing class someClass(object): def __init__(self): pass def …

9
Python辞書の保存
私は.csvファイルを使用してデータをPythonに出し入れすることに慣れていますが、これには明らかな課題があります。辞書(または辞書のセット)をjsonまたはpckファイルに格納する簡単な方法についてアドバイスはありますか?例えば: data = {} data ['key1'] = "keyinfo" data ['key2'] = "keyinfo2" これを保存する方法と、ロードする方法の両方を知りたいです。
198 python  json  dictionary  save  pickle 

10
JSONへのクラスインスタンスのシリアル化
クラスインスタンスのJSON文字列表現を作成しようとしていますが、問題があります。クラスが次のように構築されているとしましょう: class testclass: value1 = "a" value2 = "b" json.dumpsの呼び出しは次のようになります。 t = testclass() json.dumps(t) これは失敗し、testclassはJSONシリアライズ可能ではないことを教えてくれます。 TypeError: &lt;__main__.testclass object at 0x000000000227A400&gt; is not JSON serializable 私はpickleモジュールも使ってみました: t = testclass() print(pickle.dumps(t, pickle.HIGHEST_PROTOCOL)) また、クラスインスタンス情報を提供しますが、クラスインスタンスのシリアル化されたコンテンツは提供しません。 b'\x80\x03c__main__\ntestclass\nq\x00)\x81q\x01}q\x02b.' 何が悪いのですか?

18
マルチプロセッシング:クラスで定義された関数でPool.mapを使用する方法
私が次のようなものを実行すると: from multiprocessing import Pool p = Pool(5) def f(x): return x*x p.map(f, [1,2,3]) それは正常に動作します。ただし、これをクラスの関数として配置すると、次のようになります。 class calculate(object): def run(self): def f(x): return x*x p = Pool() return p.map(f, [1,2,3]) cl = calculate() print cl.run() 次のエラーが表示されます。 Exception in thread Thread-1: Traceback (most recent call last): File "/sw/lib/python2.6/threading.py", line 532, in __bootstrap_inner …

7
Python 2と3の間のnumpy配列のピクルの非互換性
このプログラムを使用して、ここにリンクされているMNISTデータセットをPython 3.2 にロードしようとしています。 import pickle import gzip import numpy with gzip.open('mnist.pkl.gz', 'rb') as f: l = list(pickle.load(f)) print(l) 残念ながら、それは私にエラーを与えます: Traceback (most recent call last): File "mnist.py", line 7, in &lt;module&gt; train_set, valid_set, test_set = pickle.load(f) UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128) 次に、漬けたファイルをPython …


2
Python 3によるPython 2オブジェクトのunpickle化
Python 2.4で、Python 3.4を使用してpickle化されたオブジェクトをロードする方法があるかどうか疑問に思っています。 私はそれを最新の状態にするために、会社の大量のレガシーコードで2to3を実行しています。 これを行った後、ファイルを実行すると次のエラーが発生します。 File "H:\fixers - 3.4\addressfixer - 3.4\trunk\lib\address\address_generic.py" , line 382, in read_ref_files d = pickle.load(open(mshelffile, 'rb')) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 1: ordinal not in range(128) 競合しているpickle化されたオブジェクトを見ると、これはのdictでありdict、キーとtypeの値が含まれていますstr。 だから私の質問は:もともとPython 2.4でピクルされたオブジェクトをPython 3.4でロードする方法はありますか?

6
numpy配列をディスクに保存する最良の方法
私は大きな派手な配列を保持するための高速な方法を探しています。それらをバイナリ形式でディスクに保存してから、比較的高速にメモリに読み戻します。残念ながらcPickleは十分な速度ではありません。 numpy.savezとnumpy.loadが見つかりました。しかし、奇妙なことに、numpy.loadはnpyファイルを「メモリマップ」にロードします。つまり、配列の定期的な操作は非常に遅くなります。たとえば、次のようなものは非常に遅くなります。 #!/usr/bin/python import numpy as np; import time; from tempfile import TemporaryFile n = 10000000; a = np.arange(n) b = np.arange(n) * 10 c = np.arange(n) * -0.5 file = TemporaryFile() np.savez(file,a = a, b = b, c = c); file.seek(0) t = time.time() z = np.load(file) print "loading …

7
ピクルスかjson?
dictキーがタイプstrで値がints である小さなオブジェクトをディスクに保存してから、回復する必要があります。このようなもの: {'juanjo': 2, 'pedro':99, 'other': 333} 最適なオプションは何ですか?その理由は?pickleまたはでシリアル化しsimplejsonますか? Python 2.6を使用しています。
114 python  json  pickle 

7
オブジェクトの保存と読み込み、ピクルの使用
pickleモジュールを使用してオブジェクトを保存およびロードしようとしています。 まず、オブジェクトを宣言します。 &gt;&gt;&gt; class Fruits:pass ... &gt;&gt;&gt; banana = Fruits() &gt;&gt;&gt; banana.color = 'yellow' &gt;&gt;&gt; banana.value = 30 その後、「Fruits.obj」というファイルを開きます(以前に新しい.txtファイルを作成し、「Fruits.obj」に名前を変更しました)。 &gt;&gt;&gt; import pickle &gt;&gt;&gt; filehandler = open(b"Fruits.obj","wb") &gt;&gt;&gt; pickle.dump(banana,filehandler) これを行った後、セッションを閉じて新しいセッションを開始し、次のセッションを保存します(保存されるはずのオブジェクトにアクセスしようとします)。 file = open("Fruits.obj",'r') object_file = pickle.load(file) しかし、私はこのメッセージを持っています: Traceback (most recent call last): File "&lt;stdin&gt;", line 1, in &lt;module&gt; File "C:\Python31\lib\pickle.py", line …
114 python  object  pickle 

7
空のファイルを読み取って「Pickle-EOFError:Ran out of input」が表示されるのはなぜですか?
を使用しようとすると、興味深いエラーが発生しUnpickler.load()ます。これがソースコードです。 open(target, 'a').close() scores = {}; with open(target, "rb") as file: unpickler = pickle.Unpickler(file); scores = unpickler.load(); if not isinstance(scores, dict): scores = {}; ここにトレースバックがあります: Traceback (most recent call last): File "G:\python\pendu\user_test.py", line 3, in &lt;module&gt;: save_user_points("Magix", 30); File "G:\python\pendu\user.py", line 22, in save_user_points: scores = unpickler.load(); EOFError: Ran out …
109 python  file  pickle 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.