You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中高效异步批量处理80万条密码列表

高效处理80万条密码批量追加字符串的方法

为什么threading没效果?

字符串拼接属于CPU密集型任务,Python的GIL(全局解释器锁)会限制同一时间只有一个线程执行Python字节码,所以多线程根本没法提升这类任务的效率——得用多进程绕开GIL,或者用Python内部优化的语法。

推荐解决方案

1. 用列表推导式替代普通for循环

列表推导式是Python底层优化过的语法,比手动写for+append快得多,代码也简洁:

# 假设原密码列表为passwords
new_passwords = [pwd + "123" for pwd in passwords]

2. 多进程并行处理(multiprocessing.Pool)

把大列表拆成多个子块,用多进程同时处理,充分利用多核CPU的性能:

from multiprocessing import Pool
import os

def add_suffix(pwd):
    return pwd + "123"

if __name__ == "__main__":
    # 进程数建议设为CPU核心数,或核心数*2
    process_count = os.cpu_count()
    with Pool(process_count) as pool:
        # map会自动分配任务到各个进程
        new_passwords = pool.map(add_suffix, passwords)

如果内存吃紧,换成pool.imap或pool.imap_unordered,不用一次性加载所有结果,能降低内存占用。

3. 边读边处理边写入(内存友好型)

如果密码是存在文件里的,别一次性把80万条都加载到内存——直接逐行读取、处理、写入新文件,内存占用极低,速度主要由磁盘IO决定:

with open("原密码文件.txt", "r", encoding="utf-8") as infile, \
     open("新密码文件.txt", "w", encoding="utf-8") as outfile:
    for line in infile:
        pwd = line.strip()  # 去掉换行符
        outfile.write(pwd + "123\n")

4. 用numpy向量化操作(适合大规模字符串数组)

如果密码已经是numpy字符串数组,用向量化操作能获得极致速度:

import numpy as np

# 把普通列表转成numpy数组
passwords_np = np.array(passwords, dtype=str)
# 直接批量追加字符串
new_passwords_np = passwords_np + "123"
# 转回普通列表:new_passwords = new_passwords_np.tolist()

额外优化提示

  • 别在处理循环里加多余逻辑,保持pwd + "123"这个操作尽可能纯粹;
  • 如果用多进程,尽量避免在子进程里做IO操作,把IO集中在主进程,减少进程间开销。

内容的提问来源于stack exchange,提问作者MAHMOUD GAMES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:40:29