def join(self):
        """
            Wait for all parameter server workers to exit
                (Currently this means they crashed)
            Note that proxy is a daemon thread and doesn't need waiting
        """
        for i, worker in enumerate(self.workers):
            worker.join()
            U.report_exitcode(worker.exitcode, 'ps-{}'.format(i))

            Wait for all parameter server workers to exit
                (Currently this means they crashed)
            Note that proxy is a daemon thread and doesn't need waiting
        
surreal/distributed/parameter_server.py