请问这个代码怎么写能让他跑得更快

2022-09-19 13:15:44 +08:00
 zxCoder
with open("corpus.jsonl","r") as rd:
    for line in tqdm(rd.readlines()):
        line=line.strip()
        obj=json.loads(line)
        _id=obj["id"]
        id2ent[_id]=obj

这个代码怎么写能让他跑得更快

1452 次点击
所在节点    Python
7 条回复
yucongo
2022-09-19 14:03:24 +08:00
试试这个 https://pastebin.ubuntu.com/p/5rWbN3MnrT/
自然要将 count 改成 id2ent 的赋值……

文件大的话应该可以提速(内核个数-1 )倍的样子
passerby233
2022-09-19 15:31:41 +08:00
for line in rd:
line = line.strip('\n')
killva4624
2022-09-19 19:52:38 +08:00
readlines 会一次性把所有行读进去,换逐行读取。
zxCoder
2022-09-19 21:32:46 +08:00
@killva4624 全读内存里不是会更快吗
HashV2
2022-09-19 22:49:37 +08:00
@zxCoder #4 逐行读也会到内存里的,一次加载所有的数据会有 io 问题,如果行与行之间不存在关联逻辑,逐行更好一些
LindsayZhou
2022-09-19 23:18:46 +08:00
如果性能瓶颈在 json 解析的话,用 ujson: https://github.com/ultrajson/ultrajson
看 fastapi 的时候找到的库。
renmu123
2022-09-20 18:16:44 +08:00
起多进程,然后内容平分给每个进程来处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX