Найти - Пользователи
Полная версия: itertools.product(*matrix) и большие данные
Начало » Python для экспертов » itertools.product(*matrix) и большие данные
1
frostspb
Всем привет
Есть такой код
matrix = [, , ]
permut_result_iter = itertools.product(*matrix)

permut_result = list(permut_result_iter)

permut_result_add =
print(permut_result_add)

Всё работает прекрасно, но если сделать matrix размером 30х30 элементов, питон не вывозит и валица с сообщением

Process finished with exit code 137 (interrupted by signal 9: SIGKILL)

Погуглил, говорят, это из-за list(permut_result_iter), типа получается слишком большой массив и процесс умирает из-за нехватки памяти или типа того.

Как можно решить эту проблему?
Rodegast
А ты уверен что тебе нужен список в котором 205891132094649000000000000000000000000000000 картежей?
frostspb
Это генератор названий для каталога товаров. Сгенерированные названия надо вывести на веб страницу (торнадо шаблон) и выкинуть в эксель.

Так что да, нужен. Ну либо надо как-то разбить его на несколько списков, но как это сделать у меня нет идей
Rodegast
Зачем тебе 205891132094649000000000000000000000000000000 наименований?
frostspb
Дано, таблица составных частей наименований
[
,
,

]

Надо сгенерить все возможное наименования товаров.


a1b1c1 a1 b1 c1
a1b1c2 a1 b1 c2
a1b1c3 a1 b1 c3
a1b2c1 a1 b2 c1
a1b2c2 a1 b2 c2

и тд

В тепличных условия 3х3 всё работает. Но в реале кол-во столбцов может доходить до 20, а строк до 100. Так что да. мне нужен этот большой список.
Мне необязательно держать его в памяти, надо отрендеритть на html-шаблоне и выкинуть в эксель. но как это сделать не приводя генератор к листу я не знаю
Rodegast
У тебя места на диске не хватит что бы этот HTML записать.
frostspb
хм, а как тогда быть?
FishHook
frostspb
Дружище, ну если бы программирование сводилось бы к знанию синтаксиса языка, то мы бы были дико задемпингованы школотой всех мастей. Как быть? Изучать науку, которую пять лет преподают в университете. Алгоритмы, структуры данных, всякая там магия математики. Ну о чем с тобой говорить, если ты не вкуриваешь алгоритмическую сложность декартова произведения?
doza_and
frostspb
хм, а как тогда быть?

Представьте вы стоите на берегу Атлантического океана и говорите хочу выпить океан, а он в меня не лезет. Что мне делать?
Что мы должны ответить?

Перестаньте хотеть.

Задача решается изменением постановки задачи. Как именно решать Вам.

Rodegast
У тебя места на диске не хватит что бы этот HTML записать.
:) :) Это несколько преуменьшено. Если верить вычислениям, то надо собрать несколько терабайтных винчестеров, точнее из терабайтных винчестеров надо собрать кучу массой в несколько сот масс солнца.



py.user.next
frostspb
хм, а как тогда быть?
Нужно понять, зачем тебе сохранять все эти комбинации, что ты собрался с ними делать дальше.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB