page contents

10倍加速文件处理!用 Python multiprocessing 批量处理大文件任务

你是否遇到过这样的问题?要对一批大文件进行处理(如读取、清洗、转换格式),结果一个一个处理太慢;明明电脑 CPU 有 8 核,Python 却只吃了一个核,效率低得离谱;用 threading 多线程还是没快多少,因为 Python 的 GIL 限制住了它的发挥……别急,今天教你一招:

attachments-2025-05-rnJPfjMn68390903d8e45.jpg你是否遇到过这样的问题?要对一批大文件进行处理(如读取、清洗、转换格式),结果一个一个处理太慢;明明电脑 CPU 有 8 核,Python 却只吃了一个核,效率低得离谱;用 threading 多线程还是没快多少,因为 Python 的 GIL 限制住了它的发挥……别急,今天教你一招:

用 multiprocessing 模块 开启多进程并行处理任务,让 Python 真正用上多核 CPU,速度暴涨!

我们要解决什么?

场景:对一个大文件夹中的所有 .txt 文件进行批量处理

比如你要统计每个文本文件中的关键词数量,或进行格式转换、数据提取。

技术核心

模块用途

multiprocessing 创建多个独立进程并发处理 

os 遍历目录,获取文件路径 

实战代码:多进程处理文件夹下的文本文件

import os

import time

from multiprocessing import Pool, cpu_count

# 要处理的文件夹路径

FOLDER_PATH = "./texts"

# 定义你的文本处理逻辑

def process_file(file_path):

    with open(file_path, "r", encoding="utf-8") as f:

        content = f.read()

    word_count = len(content.split())

    print(f"{os.path.basename(file_path)} 有 {word_count} 个单词")

    return word_count

# 获取所有 txt 文件路径

def get_txt_files(folder):

    return [os.path.join(folder, f) for f in os.listdir(folder) if f.endswith(".txt")]

def main():

    start = time.time()

    files = get_txt_files(FOLDER_PATH)  

    # 创建进程池,核心数 = CPU 核心数

    with Pool(processes=cpu_count()) as pool:

        pool.map(process_file, files)

    print(f"所有文件处理完成,用时 {time.time() - start:.2f} 秒")

if __name__ == "__main__":

    main()

运行效果

假设有 20 个 txt 文件,单线程处理需约 10 秒,多进程只需 2~3 秒!

终端输出示例:

a.txt 有 132 个单词

b.txt 有 245 个单词

...

所有文件处理完成,用时 2.33 秒

多进程的优势在哪?

跳过 GIL 限制:每个进程是独立的 Python 解释器;

CPU 全核利用:multiprocessing 可以用满你的 4核/8核 CPU;

使用简单:一行 pool.map() 轻松调度任务;

进阶玩法(选讲)

你还可以配合以下技巧,让多进程更强大:

技巧简介

pool.apply_async 异步提交任务,适合动态调度 

multiprocessing.Queue 进程间通信 

lock + counter 安全统计共享变量(如总词数) 

Process + join() 手动创建进程,掌控更灵活 

应用场景拓展

批量爬虫:抓取网页/下载图片

多文件转换:如批量 PDF 转 TXT

数据处理:并行处理 CSV/日志文件

CPU 密集型任务:图像识别、加密计算

总结一句话:

如果你做的是 CPU 密集型 任务,记得用 multiprocessing,别再让你的多核 CPU 吃灰了!

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-05-30 09:25
  • 阅读 ( 50 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1303 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2136 文章
  3. Pack 1303 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章