In addition to the main thread, there were threads (one per node) that were hanging around, preventing the return of main() in BenchRunner.py from completing. I added a line to kill all the workers and that did the trick:
...
if options.distribute:
from Distributed import DistributionMgr
ret = None
try:
distmgr = DistributionMgr(
args[0], klass, method, options, cmd_args)
except UserWarning, error:
trace(red_str("Distribution failed with:%s \n" % (error)))
try:
distmgr.prepare_workers(allow_errors=True)
ret = distmgr.run()
distmgr.final_collect()
except KeyboardInterrupt:
trace("* ^C received *")
distmgr.abort()
# added this line
[w.die() for w in distmgr._workers]
return ret
else:
...
In addition to the main thread, there were threads (one per node) that were hanging around, preventing the return of main() in BenchRunner.py from completing. I added a line to kill all the workers and that did the trick: