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')
多线程处理任务--python
最新推荐文章于 2024-08-24 16:43:50 发布