多线程处理任务--python

import os
import threading
import time

# 定义函数,用于将一个文件夹中的文件平均拆分成n个文件夹
def split_folder(folder_path, n):
    # 获取文件夹中的所有文件名
    file_names = os.listdir(folder_path)
    # 计算每个文件夹中应该包含的文件数量
    num_per_folder = len(file_names) // n
    # 创建n个文件夹
    for i in range(n):
        new_folder_path = os.path.join(folder_path, f'folder_{i+1}')
        os.makedirs(new_folder_path, exist_ok=True)
        # 将文件拷贝到新的文件夹中
        for j in range(num_per_folder):
            old_file_path = os.path.join(folder_path, file_names[i*num_per_folder+j])
            new_file_path = os.path.join(new_folder_path, file_names[i*num_per_folder+j])
            os.rename(old_file_path, new_file_path)
        # 处理最后一个文件夹中的文件
        if i == n-1:
            for j in range(num_per_folder*n, len(file_names)):
                old_file_path = os.path.join(folder_path, file_names[j])
                new_file_path = os.path.join(new_folder_path, file_names[j])
                os.rename(old_file_path, new_file_path)

# 定义函数,用于读取一个文件夹中的所有文件
def read_folder(folder_path):
    # 获取文件夹中的所有文件名
    start_time = time.time()  # 记录程序开始时间
    file_names = os.listdir(folder_path)
    # 逐个读取文件
    for file_name in file_names:
        file_path = os.path.join(folder_path, file_name)
        with open(file_path, 'r') as f:
            content = f.read()
            # print(content)
            result = file_name.join(content.split())
            # 将读取的内容去除空格后拼接成一个字符串
            print(result)
            # 处理文件内容
            # ...
            time.sleep(10)
    end_time = time.time()  # 记录程序结束时间

    total_time = end_time - start_time  # 计算程序运行时间

    print("程序运行时间为:", total_time, "秒")
# 定义函数,用于启动n个线程分别读取n个文件夹中的文件
def read_folders_in_threads(dir_path, n):
    # 创建n个线程
    threads = []
    for i in range(n):
        folder_name = f'folder_{i+1}'
        folder_path = os.path.join(dir_path, folder_name)
        t = threading.Thread(target=read_folder, args=(folder_path,))
        threads.append(t)
    # 启动线程
    for t in threads:
        t.start()
    # 等待所有线程执行完毕
    for t in threads:
        t.join()

# 调用函数,将一个文件夹中的文件平均拆分成3个文件夹
# split_folder('../multiprocess/test', 3)

# 调用函数,启动3个线程分别读取3个文件夹中的文件
read_folders_in_threads('../multiprocess/test', 3)

# read_folder('../multiprocess/test1')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值