在深度学习中,图片、文本等数据集非常大。对数据进行合并,复制,转移删除等操作如果使用 windows 鼠标操作是一个非常慢的过程。 小白自己编写了一个相关代码,多进程速度还行,如果有更好的解决办法或者中间会出现一些进程安全,数据错误请留言。
from multiprocessing import Process
import glob
import os
#多进程函数处理模块
def multi_processing_task(task_name,data_list,*args,data_per_part=4000):
data_len = len(data_list)
part_num = int(data_len / data_per_part) if data_len % data_per_part == 0 else data_len // data_per_part + 1
print(part_num)
multi_processes = []
for idx in range(part_num):
if idx == (part_num-1):
seg_data = data_list[idx*data_per_part:]
else:
seg_data = data_list[idx*data_per_part:(idx+1)* data_per_part]
multi_processes.append(Process(target=task_name,args=(seg_data,*args)))
# print("Process_{} created!".format(idx))
for sp in multi_processes: sp.start()
for sp in multi_processes: sp.join()
#文件移动方法
def move_files(file_list,tar_path):
for item in file_list:
file_name = os.path.basename(item)
new_full_path = os.path.join(tar_path,file_name)
shutil.move(item,new_full_path)
#删除文件方法
def delete_files(file_list):
for item in file_list:
if os.path.isfile(item):
os.remove(item)
if __name__ == '__main__':
tar_path = r"E:\henryTrainDir\new_car_detect_part"
# tar_path2 = r"E:\tar_path2"
file_list = []
#使用glob pattern查找速度很快
file_lists = glob.glob(tar_path+r"\**\*.*",recursive=True)
print(len(file_lists))
multi_processing_task(delete_files,file_lists,data_per_part=3000)