python - 简单的python脚本,多线程?

标签 python python-3.x multithreading

我有一个简单的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/

相关文章:

python - pymongo 的安装有效但在 python3 中导入时失败

python-3.x - 使用文件夹结构迭代 S3 存储桶中的文件

java - 如何为我的自制桌面应用程序实现线程

python - 对包含 float 和字符串的列表值中的 float 执行操作

Python、keras、卷积自动编码器

python - 如何从输入中搜索列表中的特定单词

multithreading - Swift:不断从服务器请求数据的最佳方式是什么

python - 在不使用 BeautifulSoup 的情况下使用 python 提取网页上的链接的最简单方法是什么?

python-3.x - docxtpl 特殊 tr 标记 {%tr %} 不起作用

javascript - 共享数据问题