@PtrGrd

Как результат каждого процесса записать в отдельный соответствующий файл (Multiprocessing, Python)?

Кратко:
Есть скрипт, который дробит большой массив данных на группы. Каждая такая группа данных работает в отдельном процессе. Нужно сделать так, чтобы каждая такая группа данных записывалась в целевой для нее файл.

Мне нужно сделать так, чтобы код находил файл куда нужно записать данные

Упрощенный вариант моего кода (для наглядности)
# Разбили массив данных на три группы. Каждому процессу - одну группу из списка
data_group = [["123", "123", "123"], ["123", "123", "123"], ["123", "123", "123"]]

# Функция записи данных в конкретный файл
def write_data(data, file_name):

	with open(file_name, mode='w', encoding="utf-8") as file:
		names = ["Колонка1", "Колонка2"]
		file = csv.DictWriter(file, delimiter = ",", lineterminator = "\r",
			fieldnames = names)
		# Запись данных в колонку
		for item in data:
			file.writerow(item)

# Функция анализа данных
def func(data_group):
	data = []
	# Какой-то анализ группы данных с последующей записью в файл
	for item in data_group:
		first = item[0]
		second = item[1]
		third = item[2]
		data.append(first, second, third)
		write_data(data, file_name)

# Запуск в 3 процессах
with Pool(3) as pool:
	pool.starmap(func, product(data_group, file_name))


Нужно как то передать в каждый отдельный процесс отдельный файл. Помогите пожалуйста, заранее, огромное спасибо!
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@Vindicar
for i,item in enumerate(data_group):
    file_name = f"{i}.txt"
    #ну и далее по тексту

Как-то так? Я серьёзно не вижу в чём затруднение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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