質問

私は、キーと値のペアの膨大なリストを格納するためにberkdbを使用していますが、私は後で私はこのエラーを取得したデータの一部にアクセスしよう何らかの理由ます:

try:
    key = 'scrape011201-590652'
    contenttext = contentdict[key]
except:
    print the error


<type 'exceptions.KeyError'> 'scrape011201-590652' in 
contenttext = contentdict[key]\n', '  File "/usr/lib64/python2.5/bsddb/__init__.py",
line 223, in __getitem__\n    return _DeadlockWrap(lambda: self.db[key])  #   
self.db[key]\n', 'File "/usr/lib64/python2.5/bsddb/dbutils.py", line 62, in 
DeadlockWrap\n    return function(*_args, **_kwargs)\n', '  File 
"/usr/lib64/python2.5/bsddb/__init__.py", line 223, in <lambda>\n    return 
_DeadlockWrap(lambda: self.db[key])  # self.db[key]\n']

私はDeadlockWrapが何であるかわからないが、それにberkdbまたは書き込みにアクセスして、他のプログラムまたはプロセス(私の知る限り、)そうではないことを確認そのはそれに言及するならば、我々は、デッドロックを取得することができる方法がありイマイチ。それは私が急速にデータにアクセスしようとしていることは可能ですか?私は、ループ内で、この関数呼び出しを持っているので、

のようなもの
for i in hugelist:
    #try to get a value from the berkdb
    #do something with it

私は複数のデータセットでこれを実行していますし、このエラーは唯一そのうちの一つ、最大のものではなく、他と発生します。

他のヒント

contenttext = contentdict[key] if contentdict.has_key(key) else None
scroll top