このコード スニペットは、Pygame チート シート (こちら)のコードに基づいています。
wht_pix = pygame.Color(0xff,0xff,0xff)
blu_pix = pygame.Color(0x00,0x00,0xff)
pixArr = pygame.PixelArray(self.surface)
for y in xrange(0,self.hgt):
for x in xrange(0,self.wid):
if self.grid[x][y]==1:
pixArr[x][y] = blu_pix
else:
pixArr[x][y] = wht_pix
del pixArr # this line doesn't seem to affect anything
pygame.display.update()
pixArr 配列を削除したい理由は理解できます。これは、実際にはサーフェス バッファーのピクセルへのインターフェイスとして使用される単なる一時的な配列です。ただし、top
私のプログラムを実行すると、メモリ消費量がゆっくりと増加することがわかります。コードの pixArr ブロックを削除すると、メモリの問題が解消されるため、このコード ブロック内で確実に発生しています。具体的には、行を削除するdel PixArr
と、プログラムがまったく同じように動作するように見えます (メモリ消費量が増加します)。これは、IS が含まれている場合、実際にはメモリを解放していないことを意味します。
私の仮定の何が問題になっていますか?メモリリークを修正するにはどうすればよいですか?