У меня проблема с моим кодом, работающим на Google App Engine. Я не знаю, как изменить свой код в соответствии с требованиями GAE. Вот моя проблема
for j in range(n):
for d in range(j):
for d1 in range(d):
for d2 in range(d1):
# block which runs in O(n^2)
Фактически весь блок кода равен O (N ^ 6), и он будет работать более 10 минут в зависимости от n. Таким образом, я использую очереди задач. Мне также понадобится 4-мерный массив, который хранится в виде списка (например, A [j] [d] [d1] [d2]) из n x n x n x n, т. Е. Требуется пространство памяти O (N ^ 4)
Поскольку ограничение put () составляет 10 МБ, я не могу сохранить весь массив. Поэтому я попытался нарезать на более мелкие куски и сохранить их, а при получении объединить их. Для этого я использовал функцию json, но она не поддерживает большее n (> 40).
Затем я сохранил всю матрицу как отдельные объекты списков в хранилище данных, т.е. каждый объект A [j] [d] [d1]. Так что нет локальной переменной. Когда я получаю доступ к A [j] [d] [d1] [d2] в моем коде, я вызываю свои собственные функции getitem и putitem для получения и помещения данных из хранилища данных (также используется кэширование). В результате мой код требует больше времени для вычислений. После нескольких итераций я получаю ошибку 203, вызванную GAE, и задача завершается с кодом 500.
Я знаю, что мой код может не подходить для GAE. Но как лучше всего это реализовать на GAE?