Like Charlie said: as long as you make sure you only have one call per unique filename, then you will not have copies.
But you can make it easier on yourself, by writing a basic texture/surface manager so that repeated calls only load the surface once. ( If you don't want to use an id, you can remove that, and use filename as the key. ) Source: class TextureManager: """a very basic texture manager members: tex_list : a dict() using (k,v) pairs as ( id, pygame.Surface() )""" def __init__(self): self.tex_list = {} def load_image(self, id, filename): """Loads image and returns it. Doesn't load redundant images for same key.""" # don't load if already loaded if not id in self.tex_list: self.tex_list[id] = pygame.image.load(filename).convert_alpha () print "created new image for: %s" % id return self.tex_list[id] Usage: ( output from IDLE ): >>> t = TextureManager() >>> t.load_image("red", "red.png") created new image for: red <Surface(10x10x32 SW)> >>> t.load_image("red", "red.png") <Surface(10x10x32 SW)> -- Jake