[英]Simple python script, multithreaded?
我有一個簡單的 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 或密鑰,您正在尋找匹配的 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]
單個字典查找而不是嵌套循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.