Did you ever try what @oweno suggested here “ETC memory best practices - #6 by oweno”
hmm, looks like there isn’t a specific way to stream from disk, you still have to load it into a variable, but the difference would be instead of loading many images into an array in the setup() section of the mode, it could just load them as it needed in draw() :
img = pygame.image.load('first-image.png') screen.blit(img,(0,0)) # replace img with new image img = pygame.image.load('second-image.png') screen.blit(img,(100,100))
so this would draw 2 images on the screen, but only require memory for one.