多进程方式
def process_row_process(sheet,start_row,end_row):
print(start_row,end_row)
for row in sheet.iter_rows(values_only=True, min_row=start_row, max_row=end_row):
value = row[0]
print(value)
def detail_excel_file_multiprocess(excel_path, num_procs=10):
workbook = openpyxl.load_workbook(excel_path)
sheet = workbook['Sheet']
total_rows = sheet.max_row
rows_per_process = total_rows // num_procs
processes = []
for i in range(num_procs):
start_row = i * rows_per_process + 1
end_row = start_row + rows_per_process-1 if i < num_procs - 1 else total_rows
p = Process(target=process_row_process, args=(sheet,start_row,end_row))
processes.append(p)
p.start()
for p in processes:
p.join()
workbook.save(excel_path)
print('成熟度编辑完成')
进程池方式
def process_row_process_pool(args):
sheet,start_row,end_row = args
print(start_row, end_row)
for row in sheet.iter_rows(values_only=True, min_row=start_row, max_row=end_row):
value = row[0]
print(value)
def detail_excel_file_process_pool(excel_path,num_procs=10):
workbook = openpyxl.load_workbook(excel_path)
sheet = workbook['Sheet']
total_rows = sheet.max_row
rows_per_process = total_rows // num_procs
with Pool(processes=num_procs) as pool:
for i in range(num_procs):
start_row = i * rows_per_process + 1
end_row = start_row + rows_per_process - 1 if i < num_procs - 1 else total_rows
pool.map(process_row_process_pool, [(sheet, start_row, end_row)])
workbook.save(excel_path)
print('成熟度编辑完成')