python操作数据库慢_使用Python将数据写入LMDB非常慢

根据我的经验,我已经有50-100毫秒写入LMDB从Python写入在Ubuntu上的ext4硬盘上的Caffe数据.这就是我使用tmpfs(Linux内置的RAM磁盘功能)并在0.07毫秒左右完成这些写入的原因.您可以在ramdisk上创建较小的数据库并将它们复制到硬盘上,然后再对所有数据库进行训练.我正在制作大约20-40GB的内存,因为我有64 GB的内存.

一些代码可以帮助您动态创建,填充和移动LMDB到存储.随意编辑它以适合您的情况.它可以节省你一些时间来了解LMDB和文件操作如何在Python中工作.

import shutil

import lmdb

import random

def move_db():

global image_db

image_db.close();

rnd = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5))

shutil.move( fold + 'ram/train_images', '/storage/lmdb/'+rnd)

open_db()

def open_db():

global image_db

image_db = lmdb.open(os.path.join(fold, 'ram/train_images'),

map_async=True,

max_dbs=0)

def write_to_lmdb(db, key, value):

"""

Write (key,value) to db

"""

success = False

while not success:

txn = db.begin(write=True)

try:

txn.put(key, value)

txn.commit()

success = True

except lmdb.MapFullError:

txn.abort()

# double the map_size

curr_limit = db.info()['map_size']

new_limit = curr_limit*2

print '>>> Doubling LMDB map size to %sMB ...' % (new_limit>>20,)

db.set_mapsize(new_limit) # double it

...

image_datum = caffe.io.array_to_datum( transformed_image, label )

write_to_lmdb(image_db, str(itr), image_datum.SerializeToString())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值