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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows留后门–教程(五)——shift粘贴键后门

    Windows留后门–教程(五)——shift粘贴键后门一、shift粘贴键后门介绍Shift粘滞键是当用户连按5次shift就会自动弹出的一个程序,其实不光是粘滞键,还有各种辅助功能,这类辅助功能都拥有一个特点就是当用户未进行登录时也可以触发。所以攻击者很有可能通过篡改这些辅助功能的指向程序来达到权限维持的目的。(辅助功能镜像劫持是一样的原理)二、shift粘贴键后门-教程前提条件:假设在攻击的过程中通过利用各种getshell,已经拿到目标服务器administrator权限靶机:windowsServer2012IP:192.168.2

    2022年9月2日
    5
  • java string类型转换成int类型(string怎么强转int)

    String是引用类型,int是基本类型,所以两者的转换并不是基本类型间的转换,这也是该问题提出的意义所在,SUN公司提供了相应的类库供编程人员直接使用

    2022年4月15日
    283
  • MDK5搭建ARM9开发环境「建议收藏」

    MDK5搭建ARM9开发环境「建议收藏」在使用MDK5开发ARM9程序时,需要安装ARM9的支持包。链接:http://www2.keil.com/mdk5/legacy安装后即可在DEVICE选项找到我们需要的芯片型号

    2022年6月10日
    40
  • 网页游戏开发入门教程一(webgame+design)

    网页游戏开发入门教程一(webgame+design)网页游戏开发入门教程一(webgame+design) 一、简单的程序框架。webgame程序构成:三大部分。第一是数据流程。第二是程序。第三是美术。其中,数据流程包括了功能。也只有在功能中才能体现数据流程。数据流程相当的麻烦,后面再讨论。比如最简单的卖买产品。要实现这个功能。那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强,相应

    2022年5月2日
    53
  • PIT,BL,AP,CP,CSC

    PIT,BL,AP,CP,CSC使用ODIN刷机的时候,要选择ROM文件,以下是5件套各部分的说明:PIT:分区信息,如果没有更换ROM,一般不需要刷,也不需要勾选re-partition选项BL:bootloader,引导信息AP或者PDA:安卓内核数据CP或者PHONE:基带数据CSC:厂家定制信息,即包括不同销售地区不同的信息,也包括厂家定制的一些APP,还包括合约机绑定的APP。

    2022年7月21日
    15
  • 0929【非常好】 库仑计计算电量 Fuel Gauge 锂离子电池及电池电量计介绍

    0929【非常好】 库仑计计算电量 Fuel Gauge 锂离子电池及电池电量计介绍锂离子电池及电池电量计介绍 Li ionBatteryan www richtek com Design 20Support Technical 20Document AN024 sc lang zh CN1 锂离子电池介绍 1 1 荷电状态 State Of Charge SOC 荷电状态可定义为电池中可用电能的状态

    2025年7月29日
    3

发表回复

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

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