要读取的文件的行数比较多,大概4.5亿行。每行的字节数不一样
想用多线程处理文件中每行内容。(单线程太慢)
那么现在如何快速定位到行呢?
用循环readline方法由于要返回每行内容,是不是太慢?
基本上不能吧。
######每行的字节数都不同,可以考虑对每行建个哈希索引
######
很简单,直接定位就行
f = open('test.txt')
fn = list(f)
fn[0] 就是第一行的数据
类推,有不明白的给我留言
######回复 @mavarick : 你怎么就这么死脑经。这是方法。不会把文件内容分段读取,还可以使用线程技术。难道你只知道copy,######你这样的话,光内存都要至少21个G######标准库里倒是有linecache, 不过你这量级肯定是靠不住的
分段读(读大一点,open第三个参数可以设置buffer), 然后把line_no:offset-size存到bsddb的btree库吧
######没明白什么意思,能说细点吗?######我只是想问一下,什么应用会出现21G的单文件,期望下次见到有个印象。######为什么会有这样的文件啊 是log吗?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。