In my experience, executing snappy commands in a subprocess is very slow in Python.
If speed is important to you, a faster solution is to simply execute the GPT tool from the command line and not use snappy at all for processing. You can then read in the product using snappy ProductIO.readProduct()
making sure to dispose of it afterwards product.dispose()
and then continue processing in python. Or you can write it to HDF5 format and read it using h5py. I found it took 14s with subprocess and snappy, versus 11s with GPT.
This is not nearly as fast as using snappy to do the processing (6s), however it avoided all the memory problems when bulk processing.