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.1release,numpy 1.1.0
变化:
src_ary = np.asarray(board, dtype=np.uint8)
为:
src_ary = board.astype(np.uint8)
将内存泄漏减慢42%
答案 0 :(得分:2)
pygame 1.7.1使用Numeric
并执行dst_ary[...] = src_ary
其中dst_ary
是Numeric.array
而src_ary
是numpy.ndarray
泄漏内存不明原因。
将pygame升级到1.9.1可以使用numpy进行表面访问修复了这个问题。