@lemonlimelike

Как распределить массивы данных между потоками?

Всем привет! Задача вроде простая, но я не понимаю как такое сотворить.
Есть два массива по 50к элементы. Нужно создать третий массив в котором будут не повторяющиеся элементы из тех двух массивов. Вообщем нужно убрать дубли. Скрипт написал, но он работает в одном потоке. И это очень долго. Как распределить эти все данные между потоками?

Вот мой код:
import pandas as pd
import json
from time import sleep
from threading import Thread


def get_data(file_name):
	df = pd.read_excel(file_name,sheet_names=0)
	data = []
	for item in df.to_records(index=False):
		data.append(item[0])

	return data


if __name__ == '__main__':
	test1 = get_data('t1.xlsx')
	test2 = get_data('t3.xlsx')

	result = []
	# with open('result.json','w') as file_json:
	
	for i,ii in enumerate(test1):
		for j,jj in enumerate(test2):
			print(i,j)
			if i == j:
				continue
			if ii.strip().lower() not in jj.strip().lower():
				if ii.strip().lower() not in result:
					result.append(ii.strip().lower())

	df = pd.DataFrame(result)
	df.to_excel('r.xlsx',index=False,header=None)
						# file_json.write(json.dumps(ii)+'\n')


Есть такая мысль как это сделать, но довести до ума не получается: длины этих двух массивов разделить на 10(кол-во потоков) а затем каким-то образом через функцию range запускать массив в каждом потоке по выбранным областям
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
@dzhebrak
Не совсем по вашим требованиям, но вы не пробовали объединить файлы и удалить дубликаты с помощью pandas? Вероятнее всего так будет быстрее. Т.е. что-то вроде такого:
# df1 - датафрейм t1.xlsx, df2 - датафрейм t3.xlsx
df = pd.concat([df1, df2])

# перевести все нужные столбцы в нижний регистр и обрезать пробелы
# можно сделать новые столбцы с измененными данными, если исходные данные важны
df['column_name'] = df['column_name'].apply(lambda x : x.lower().strip())

# удаление дубликатов по всем столбцам
df.drop_duplicates(keep=False, inplace=True)

# удаление дубликатов по какому-то определенному столбцу
#df.drop_duplicates(subset=['letter'], inplace=True)

https://pandas.pydata.org/pandas-docs/stable/refer...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы