In that case, users could do something like this:
mcmc = ...
while True:
result = mcmc.iterate()
if result.is_finished():
break
if every 100th iteration:
store to disk
if every 10th iteration
print diagnostics, current state etc.
This would allow users to set up arbitrarily complex search routines, including logging final results to disk, storing partial results on disk, stopping/restarting, showing as much output data as they like in whatever form they like, storing output data somewhere on a server in a way that websites or other clients can read it etc.