求助优化Python文件搜索方法:核心性能瓶颈突破
核心方法优化求助:从海量文件中提取含指定tid的行首did
我正在优化一个项目核心方法,它的耗时占比接近95%。功能是读取文件的每一行,若行中包含指定tid,则提取行首的数字(即document id,简称did)。
文件内容示例:
5168 268:0.0482384162801528 297:0.0437108092315354 352:0.194373864228161 5169 268:0.0444310314892627 271:0.114435072663748 523:0.0452228057908503
当前实现中,tid_add_colon_in_front(tid)方法会给纯字符串格式的tid前加冒号,did_tids_file是已打开的目标数据文件。当前代码如下:
def dids_via_tid(tid) -> set: did_tids_file.seek(0) dids = set() # 处理tid,添加前缀冒号用于匹配 tid = tid_add_colon_in_front(tid) did_str = "" # 避免使用line.split,逐行处理 for line in did_tids_file: did_str = "" if tid in line: for char in line: if char == " ": break did_str += char dids.add(did_str) return dids
之前我用line.split实现,但听说处理海量数据时这个方法的内存和时间开销更大。另外还试过用readLine循环读取,也没提升性能:
line = myFile.readLine() while line: # 处理逻辑 line = myFile.readLine()
求进一步的优化思路!
内容的提问来源于stack exchange,提问作者gybonel
相关产品推荐
相关产品推荐

