我有一个简单的python脚本,该脚本从两个.txt文件读取并将输出保存在新的文本文件中。
这是我的代码如下所示:
import os
with open("users.txt", encoding="utf-8") as f:
users = f.readlines()
users = [x.strip() for x in users]
with open("users1.txt", encoding="utf-8") as f:
passes = f.readlines()
passes = [x.strip() for x in passes]
results = []
for user in users:
h = user[user.find(':') + 1:]
for p in passes:
if p[:p.find(':')] == h:
results.append((user[:user.find(':')], p[p.find(':') + 1:]))
passes.remove(p)
break
with open('results.txt', 'w+', encoding="utf-8") as f:
for item in results:
f.write(f"{item[0]}:{item[1]}\n")
user.txt大约有3-10M行。.当然,这需要花费很长时间才能处理,大约需要1-3个小时。我认为唯一的原因是因为脚本在单个线程中运行。我做了一些挖掘工作,并提出了一些想法。
有什么方法可以使这个简单的脚本在1个以上的线程上运行?会加快这个过程吗?
谢谢!
最佳答案
如果您首先将通行证转换成某种字典,将节省大量时间。我不完全理解您的代码,但是似乎每个user
和每个pass
都嵌入了某种ID或 key ,您正在寻找匹配的ID。
将通行证转换成字典
my_dictionary = { pass[:pass.find(':')] : pass for pass in passes }
然后,您的外部循环为:for user in users:
id = user[user.find(':') + 1:]
if id in my_dictionary:
pass = my_dictionary[id]
.... whatever you do with user and pass ...
del my_dictionary[id]
单个字典查找而不是嵌套循环。
关于python - 简单的python脚本,多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64494947/