python提取列关键字所在行_python 如何实现并行查找关键字所在的行?

本文讨论了如何优化Python代码,提高查找关键字所在行的效率。建议避免使用readlines(),改为逐行读取,并利用集合(set)代替列表进行关键词搜索,以减少查找时间。此外,对于找到关键词的行,可以添加break语句以退出内层循环,提升性能。代码示例展示了如何应用这些改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有几十万个关键字放在文件4.txt中,想提取文件3.txt中含有关键字的行,保存到文件5.txt中.

文件3有200万行,我使用下面的代码可以实现我的要求,但是非常慢,一个下午还没运行完,谁有快一点的方法?

使用并行改如何改造呢?我看到这里有个并行的帖子,,与我的不同的事,我要同时读以及查询同一个文件,上述链接可以并行操作多个文件。

with open('3.txt', 'r') as f3, open('4.txt', 'r') as f4, open('result.txt', 'w') as f5:

a = [line.strip() for line in f4.readlines()]

for li in f3.readlines():

new_line = li.strip().split()[1][:-2]

for i in a:

if i in new_line:

f5.writelines(li)

因為沒有實際的文件,沒有辦法給你一個百分之百的保證,不過對於你的 code,我有一些些效率改進上的建議:

(也許你會發現改進後的代碼根本不需要使用並行的解決的方案)

首先一個很大的問題是

readlines()

,這個方法會一口氣讀取 file objects 中的所有行,這對於效率和資源的使用顯然是極差的,幾十萬行幾百萬行的東西要一口氣讀完了,這可是非常恐怖的.

詳細的分析和討論請參考Never call readlines() on a file

(文章中的這段話幾乎可當作是警語了)

There are hundreds of questions on places like StackOverflow about the readlines method, and in every case, the answer is the same.

“My code is takes forever be

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值