簡體   English   中英

簡單的python腳本,多線程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM