私は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
私はこれを複数のデータセットで実行していますが、このエラーはそのうちの1つでのみ発生し、最大のものであり、他のデータセットでは発生しません。