Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2018 20:53:38

ArtyomZaitsev
Зарегистрирован: 2018-01-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка pygame.error: Out of memory

Добрый всем день, пытаюсь получить матрицу из экземпляров класса таким образом:

 all_blocks = [[] for i in range(int(max_x / s))]
for i in range(max_x):
    for j in range(max_y):
        block = Block(green, s, s)
        block.rect.x = i
        block.rect.y = j
        j += s
        all_blocks[count].append(block)
    i += s
    count += 1
    if count >= max_x / s:
        count = 0
Но выдает ошибку “pygame.error: Out of memory”. В чем я косячу?

Отредактировано ArtyomZaitsev (Фев. 13, 2018 20:54:01)

Офлайн

#2 Фев. 14, 2018 06:26:19

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ошибка pygame.error: Out of memory

ArtyomZaitsev
pygame.error: Out of memory
Расходуете слишком много памяти?



Офлайн

#3 Фев. 14, 2018 16:47:04

ArtyomZaitsev
Зарегистрирован: 2018-01-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка pygame.error: Out of memory

Ну, это понятно. Вопрос же “почему?”. Я вот никак не могу дойти до того, чтобы понять, почему этот код “жрёт” память.

Офлайн

#4 Фев. 14, 2018 17:12:46

vic57
Зарегистрирован: 2015-07-07
Сообщения: 908
Репутация: +  127  -
Профиль   Отправить e-mail  

Ошибка pygame.error: Out of memory

ищи куда память течет

 >>> import sys
>>> lst = [i for i in range(10000000)]
>>> sys.getsizeof(lst)
81528056
>>> 
ЗЫ может забыл count в начале обнулить?

Отредактировано vic57 (Фев. 14, 2018 17:15:14)

Офлайн

#5 Фев. 14, 2018 18:19:20

ArtyomZaitsev
Зарегистрирован: 2018-01-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка pygame.error: Out of memory

Если вдруг кому интересно, то вот так заработало:

 all_blocks = [[] for i in range(int(max_x/s))]
for i in range(int(max_x/s)):
    for j in range(int(max_y/s)):
        block = Block(green, s, s)
        block.rect.x = i * s
        block.rect.y = j * s
        j += 1
        all_blocks[i].append(block)
    i += 1
Как будто питону не нравятся итерации с i или J отличающимися от единицы.

Отредактировано ArtyomZaitsev (Фев. 14, 2018 18:27:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version