python lmdb_python compile函数

python lmdb_python compile函数使用Python合并lmdb文件

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

由于Caffe使用的存储图像的数据库是lmdb,因此有时候需要对lmdb文件进行操作,本文主要讲解如何用Python合并lmdb文件。没有lmdb支持的,需要用pip命令安装。

pip install lmdb

代码及注释如下:

# coding=utf-8
# filename: merge_lmdb.py

import lmdb

# 将两个lmdb文件合并成一个新的lmdb
def merge_lmdb(lmdb1, lmdb2, result_lmdb):

    print 'Merge start!'

    # env代表Environment, txn代表Transaction

    # 打开lmdb文件,读模式
    env_1 = lmdb.open(lmdb1)
    env_2 = lmdb.open(lmdb2)

    # 创建事务
    txn_1 = env_1.begin()
    txn_2 = env_2.begin()

    # 打开数据库
    database_1 = txn_1.cursor()
    database_2 = txn_2.cursor()

    # 打开lmdb文件,写模式,
    env_3 = lmdb.open(result_lmdb, map_size=int(1e12))
    txn_3 = env_3.begin(write=True)

    count = 0
    # 遍历数据库
    for (key, value) in database_1:
        # 将数据放到结果数据库事务中
        txn_3.put(key, value)
        count++
        if(count % 1000 == 0):
            # 将数据写入数据库,必须的,否则数据不会写入到数据库中
            txn_3.commit()
            count = 0
            txn_3 = env_3.begin(write=True)

    if(count % 1000 != 0):
        txn_3.commit()
        count = 0
        txn_3 = env_3.begin(write=True)

    for (key, value) in database_2:
        txn_3.put(key, value)
        if(count % 1000 == 0):
            txn_3.commit()
            count = 0
            txn_3 = env_3.begin(write=True)

    if(count % 1000 != 0):
        txn_3.commit()
        count = 0
        txn_3 = env_3.begin(write=True)

    # 关闭lmdb
    env_1.close()
    env_2.close()
    env_3.close()

    print 'Merge success!'

    # 输出结果lmdb的状态信息,可以看到数据是否合并成功
    print env_3.stat()

def main():
    fr = open('lmdb.txt')
    # lmdb1的目录
    lmdb1 = fr.readline().strip()
    # lmdb2的目录
    lmdb2 = fr.readline().strip()
    # result lmdb的目录
    result_lmdb = fr.readline().strip()
    fr.close()
    merge_lmdb(lmdb1, lmdb2, result_lmdb)

if __name__ == '__main__':
    main()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187944.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手把手教你学dsp_大咖问答第13期:如何掌握DSP设计?顾卫钢博士在线为你解答…「建议收藏」

    手把手教你学dsp_大咖问答第13期:如何掌握DSP设计?顾卫钢博士在线为你解答…「建议收藏」本期邀请到了顾卫钢,参加电路城论坛第十三期大咖问答(8月4日-8月16日),本期将由顾卫钢为大家解答关于DSP设计方面的各种问题。大咖简介:顾卫钢,东南大学电气工程学院博士国内知名嵌入式培训专家,嵌入式产品技术顾问,2019年荣获TI大学计划卓越贡献奖。拥有近十年产品研发经验,近年来带领团队研发了具有代码自动生成功能、基于模型设计的实时数字控制器RTU-BOX、积木式电力电子功率组件等…

    2022年4月28日
    73
  • 键盘 计算机代码,键盘钩子示例[通俗易懂]

    键盘 计算机代码,键盘钩子示例[通俗易懂]#region自定义事件//////Hooksthestart.///publicvoidHook_Start(){//安装键盘钩子if(hHook==0){KeyBoardHookProcedure=newHookProc(KeyBoardHookProc);hHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyBoardHookPr…

    2022年5月30日
    35
  • tensorflow2.2_实现Resnet34_花的识别[通俗易懂]

    tensorflow2.2_实现Resnet34_花的识别[通俗易懂]残差块    Resnet是由许多残差块组成的,而残差块可以解决网络越深,效果越差的问题。    残差块的结构如下图所示。其中:weightlayer表示卷积层,用于特征提取。F(x)F(x)F(x)表示经过两层卷积得到的结果。xxx表示恒等映射。F(x)+xF(x)+xF(x)+x表示经过两层卷积后与之前的卷积层进行结合。所以F(x)F(x)F(x)和xxx代表的是相同的信号。作用:将浅层网络的信号递给深层网络,使网络得到更好的结果。批量归一化(BatchNormaliz

    2022年9月28日
    2
  • robots.txt详解[通俗易懂]

    robots.txt详解[通俗易懂]怎样查看robots文件?浏览器输入主域名/robots.txtrobots.txt的作用robots.txt文件规定了搜索引擎抓取工具可以访问网站上的哪些网址,并不禁止搜索引擎将某个网页纳入索引。如果想禁止索引(收录),可以用noindex,或者给网页设置输入密码才能访问(因为如果其他网页通过使用说明性文字指向某个网页,Google在不访问这个网页的情况下仍能将其网址编入索引/收录这个网页)。robots.txt文件主要用于管理流向网站的抓取工具流量,通常用于阻止Google.

    2022年5月1日
    46
  • Linux中公钥和私钥原理

    Linux中公钥和私钥原理原文 公钥和私钥原理一直以来对公钥和私钥都理解得不是很透彻 感觉到模棱两可 心里直打鼓呢 公钥怎么会事 私钥怎么会事 工作原理是怎么的 今天在网上找了半天 通过查看大家对这个密钥对的理解 总算弄清楚了 咱就把我的心得写出来给大家对密钥对有疑问的同志们看看 nbsp nbsp nbsp nbsp nbsp nbsp 公钥和私钥就是俗称的不对称加密方式 是从以前的对称加密 使用用户名与密码 方式的提高 我用电子邮件的方式说明一下原理 nbsp nbsp nbsp

    2025年8月18日
    3
  • .npy文件_文件后缀名是npy怎么打开

    .npy文件_文件后缀名是npy怎么打开深度学习–迁移学习在使用训练好的模型时,其中有一种保存的模型文件格式叫.npy。打开方式·实现代码:importnumpyasnptest=np.load(‘./bvlc_alexnet.npy’,encoding=”latin1″)#加载文件doc=open(‘1.txt’,’a’)#打开一个存储文件,并依次写入print(test,file=doc)#…

    2025年8月21日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号