为什么从一个numpy数组到pygame表面泄漏记忆?

时间:2011-07-19 11:53:03

标签: python numpy pygame

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%

1 个答案:

答案 0 :(得分:2)

pygame 1.7.1使用Numeric并执行dst_ary[...] = src_ary其中dst_aryNumeric.arraysrc_arynumpy.ndarray泄漏内存不明原因。

将pygame升级到1.9.1可以使用numpy进行表面访问修复了这个问题。