In my own opinion, I ran into a performance bottleneck with H2o recently, here is my findings.
Basically, h2o.remove, is not just a quick python memory cleanup. This process kiks off a full on garbage collection process in the H2O backend which is running Java. This can suprisingly be slow, especially if you are doing it repeatedly.
few things that works better during internal cleanup are
Avoid removing frames inside your plotting function id possible
if the memory usage is not a huge concern, just skip h2o.remove entirely.
I recoment that id you really want to free up space, do it in batches at the end using h2o.remove_all(). and make sure you dont call h2o.remove on every single frame within a loop.