gpt4 book ai didi

python - lmdb.BadRslotError : mdb_txn_begin: MDB_BAD_RSLOT: Invalid reuse of reader locktable slot?

转载 作者:行者123 更新时间:2023-12-04 15:43:17 26 4
gpt4 key购买 nike

我一直在为具有呈现风格的图像试验最近邻算法 in this post (即目标是查看有多少几乎相似的图像)。在运行适合我的案例的示例后,我多次看到错误 "lmdb.BadRslotError: mdb_txn_begin: MDB_BAD_RSLOT: Invalid reuse of reader locktable slot",想知道是什么原因?

我的假设是它是由于在同一次运行中两次打开(相同的)lmdb 引起的(至少在修复后它没有出现),但不完全确定。给出了少数搜索结果之一 in another forum ,但答案并不确定。

所以错误来自 .begin 语句:

fn_lmdb = fn + '.lmdb'  # stores word <-> id mapping
env = lmdb.open(fn_lmdb, map_size=int(1e9))

with env.begin() as txn:
...

在我将 open 移到 begin 旁边的那一刻,错误还没有出现,但不确定我是否解决了原因或只是一个症状......你是否偶然发现了这个问题,解决方案是什么?

最佳答案

我遇到了同样的问题,在 Python 中运行多进程。由于这可能是 SO 中与此错误唯一相关的问题,因此找到解决方案并不容易。最终我在 github 上达成了这个拉取请求并关注 documentation在我的代码中进行了此更改:

lmdb.open(db_dir, create=False, subdir=True, readonly=True, lock=False)

lock: If False, don’t do any locking. If concurrent access is anticipated, the caller must manage all concurrency itself. For proper operation the caller must enforce single-writer semantics, and must ensure that no readers are using old transactions while a writer is active. The simplest approach is to use an exclusive lock so that no readers may be active at all when a writer begins.

我的交易是只读的,因此该解决方案适合我。

我不知道是什么导致了这个问题,根据文档我的理解是锁文件中的锁不是由 lmdb 包或 Python 管理的,事务只是试图写入相同的放在文件中。

希望对大家有所帮助,自从修复后我再也没有遇到过这个问题。所以目前它似乎有效。

关于python - lmdb.BadRslotError : mdb_txn_begin: MDB_BAD_RSLOT: Invalid reuse of reader locktable slot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com