Throw out cached values once you've merged them into irrelevance
somewhat nontrivial, since you have to also remove it from all the other processes' caches
don't give the whole cache to every process
probably not worthwhile, it'd introduce all sorts of shenanigans to work out who needs to go where, and then the final process still has to use just as much memory.
reduce the number of things the master python process keeps track of, or caching more of them on disc (although the latter isn't necessarily a great option, because we already spend a significant fraction of our time reading output files).
rearrange Run() and RunKSet() so you can run all the ksets for each gene at the same time -- then you can only cache one gene's values at a time
DONE (didn't help) combine trellis, paths, and, uh, that other map that has the same keys ('cause the keys take up a lot of space, and are time-consuming to look through)
if fragmentation is the reason the memory usage keeps going up, it could be that pre-allocating a map that's larger than you'll need for any query will fix this.