Здравствуйте всем! Имею файл в 10к записей. Как запускать 10 потоков для каждые 10 записей. То есть, чтоб было не больше 10 потоков.
Имею такой код:
from threading import Thread
from openpyxl import load_workbook, Workbook
from fuzzywuzzy import process
def get_list_data(input_file_name):
'''Получение списка товаров из файла'''
list_data = []
wb = load_workbook(filename=input_file_name)
sheet = wb.active
m_row = sheet.max_row
with open('conf/alias.txt', 'r') as file_alias:
list_alias = []
for item in file_alias:
# if ',' in item:
# list_alias.append(item.title().replace(
# '\n', '').split(',')[-1])
# else:
list_alias.append(item.title().replace('\n', ''))
for i in range(1, m_row+1):
if not sheet.cell(row=i, column=1).value:
continue
title = str(sheet.cell(row=i, column=1).value).replace("'", '')
brand_s = str(sheet.cell(row=i, column=2).value).replace(
"'", '').rstrip().title().split(' ')
point_match = process.extractOne(brand_s[0], list_alias)
alias = str(sheet.cell(row=i, column=2).value).replace("'", '').rstrip().title()
if point_match is not None:
if point_match[-1] >= 50:
alias = point_match[0]
brand = '+'.join(brand_s)
min_count = str(sheet.cell(row=i, column=3).value).replace("'", '')
max_time_delivery = str(sheet.cell(
row=i, column=4).value).replace("'", '')
count_sell = str(sheet.cell(
row=i, column=5).value).replace("'", '')
object = {'idnp': title, 'brand': brand, 'min_count': min_count,
'max_time_delivery': max_time_delivery, 'count_sell': count_sell, 'alias': alias}
list_data.append(object)
return list_data
if __name__ == '__main__':
list_data = get_list_data('Копия китай.xlsx')
for index,item in enumerate(list_data):
print(index)
Была идея сделать так: запустить цикл по списку с шагом 10 и создавать поток на i,i-1,i-2,...,i-10 записей. Но с enumerate такое сделать не получается. Была еще идея: добавлять в список индексы записей уже которые были в потоках и каждый раз проверять, но это слишком тупо. Подскажите как сделать правильно.