python读取数据库数据怎么换行_一次读取多个Python pickled数据、缓冲和换行?

readlines()返回文件全部内容的列表。你一次要读几行。我认为这段天真的代码应该能解开你的数据:import pickle

infile = open('/tmp/pickle', 'rb')

buf = []

while True:

line = infile.readline()

if not line:

break

buf.append(line)

if line.endswith('.\n'):

print 'Decoding', buf

print pickle.loads(''.join(buf))

buf = []

如果您可以控制生成pickle的程序,我将选择以下选项之一:使用shelve模块。

在将每个pickle写入文件之前打印它的长度(以字节为单位),以便准确地知道每次要读取多少字节。

同上,但将整数列表写入一个单独的文件,以便可以将这些值用作保存pickle的文件的索引。

一次选取K个对象的列表。以字节为单位写入pickle的长度。写泡菜。重复。

顺便说一下,我怀疑file的内置缓冲应该能让您获得所需性能的99%。

如果您确信I/O阻塞了您,您是否考虑过尝试mmap()并让操作系统一次处理块打包?#!/usr/bin/env python

import mmap

import cPickle

fname = '/tmp/pickle'

infile = open(fname, 'rb')

m = mmap.mmap(infile.fileno(), 0, access=mmap.ACCESS_READ)

start = 0

while True:

end = m.find('.\n', start + 1) + 2

if end == 1:

break

print cPickle.loads(m[start:end])

start = end

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值