[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[pygame] BUG: pygame leaks memory (?)
Hello,
I use pygame to visualize locally on my computer what otherwise can be viewed on my self build led matrix that is driven by a raspberry pi.
When I do not use the local display, but the LED matrix, the memory used by the python process stays flat.
But when I use the local pygame display - memory usage is steadily increasing.
The whole code is on github: https://github.com/stahlfabrik/RibbaPi
Here is an example script, that mimics my code and leaks memory as well. I think the code is leaked by pygame - or my usage of pygame.
###
#!/usr/bin/env python3
import numpy as np
import pygame
import sys
class Computer():
def __init__(self, width=16, height=16, margin=5, size=30):
self.width = width
self.height = height
self.margin = margin
self.size = size
self.window_size = (width * size + (width + 1) * margin,
height * size + (height + 1) * margin)
pygame.init()
self.surface = pygame.display.set_mode(self.window_size)
pygame.display.set_caption("Leak {}x{}".format(width, height))
self.buffer = np.array([255, 255, 255] * width * height,
dtype=np.uint8).reshape(height, width, 3)
def show(self, gamma=False):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
self.surface.fill((0, 0, 0))
it = np.nditer([self.buffer[:, :, 0],
self.buffer[:, :, 1],
self.buffer[:, :, 2]], flags=['multi_index'])
while not it.finished:
color = (it[0], it[1], it[2])
(row, column) = it.multi_index
pygame.draw.rect(self.surface, color,
[(self.margin + self.size) * column + self.margin,
(self.margin + self.size) * row + self.margin,
self.size,
self.size])
it.iternext()
pygame.display.update()
if __name__ == "__main__":
import time
display = Computer()
while True:
display.show()
time.sleep(1/60)
###
OS is mac OS 10.12.2. python3 is from homebrew Python 3.5.2. From pip3 there is numpy==1.11.3 and pygame==1.9.2.
Any hint on what goes wrong here is greatly appreciated!
Best regards,
Chris