почему это превращается из пустого массива в память утечки поверхности Pygame? - PullRequest
2 голосов
/ 19 июля 2011
def blit_convert(dst_sfc, board):
    dst_ary = pg.surfarray.pixels2d(dst_sfc)
    src_ary = np.asarray(board, dtype=np.uint8)
    dst_ary[...] = src_ary
    del src_ary
    del dst_ary

вызывается с:

dst_sfc = pg.Surface((width, height), 0, 8)
board = np.zeros((width, height), dtype=np.uint16)

python 2.5.2, выпуск pygame 1.7.1, numpy 1.1.0


изменение:

src_ary = np.asarray(board, dtype=np.uint8)

до:

src_ary = board.astype(np.uint8)

замедляет утечку памяти на 42%

1 Ответ

2 голосов
/ 19 июля 2011

Pygame 1.7.1 использует Numeric и делает dst_ary[...] = src_ary, где dst_ary - это Numeric.array, а src_ary - это numpy.ndarray утечка памяти по неизвестной причине.

Обновление Pygame до1.9.1, который может использовать numpy для доступа к поверхности, исправляет это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...