frostspb
Авг. 5, 2017 16:48:26
Всем привет
Есть такой код
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
Авг. 5, 2017 17:34:14
А ты уверен что тебе нужен список в котором 205891132094649000000000000000000000000000000 картежей?
frostspb
Авг. 5, 2017 17:42:14
Это генератор названий для каталога товаров. Сгенерированные названия надо вывести на веб страницу (торнадо шаблон) и выкинуть в эксель.
Так что да, нужен. Ну либо надо как-то разбить его на несколько списков, но как это сделать у меня нет идей
Rodegast
Авг. 5, 2017 17:48:50
Зачем тебе 205891132094649000000000000000000000000000000 наименований?
frostspb
Авг. 5, 2017 17:58:37
Дано, таблица составных частей наименований
[
,
,
]
Надо сгенерить все возможное наименования товаров.
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
Авг. 5, 2017 18:10:11
У тебя места на диске не хватит что бы этот HTML записать.
frostspb
Авг. 5, 2017 18:14:53
хм, а как тогда быть?
FishHook
Авг. 5, 2017 18:29:12
frostspb
Дружище, ну если бы программирование сводилось бы к знанию синтаксиса языка, то мы бы были дико задемпингованы школотой всех мастей. Как быть? Изучать науку, которую пять лет преподают в университете. Алгоритмы, структуры данных, всякая там магия математики. Ну о чем с тобой говорить, если ты не вкуриваешь алгоритмическую сложность декартова произведения?
doza_and
Авг. 5, 2017 18:30:04
frostspb
хм, а как тогда быть?
Представьте вы стоите на берегу Атлантического океана и говорите хочу выпить океан, а он в меня не лезет. Что мне делать?
Что мы должны ответить?
Перестаньте хотеть.
Задача решается изменением постановки задачи. Как именно решать Вам.
Rodegast
У тебя места на диске не хватит что бы этот HTML записать.
:) :) Это несколько преуменьшено. Если верить вычислениям, то надо собрать несколько терабайтных винчестеров, точнее из терабайтных винчестеров надо собрать кучу массой в несколько сот масс солнца.
py.user.next
Авг. 6, 2017 01:03:25
frostspb
хм, а как тогда быть?
Нужно понять, зачем тебе сохранять все эти комбинации, что ты собрался с ними делать дальше.