@utils.synchronous('lock_update')
    def jobdone(self, workerid):
        """
        A worker has finished its job. Log this event and then asynchronously
        transfer control back to the worker.

        In this way, control flow basically oscillates between dispatcher.jobdone()
        worker.requestjob().
        """
        self._jobsdone += 1
        logger.info("worker #%s finished job #%i" % (workerid, self._jobsdone))
        worker = self.workers[workerid]
        worker.requestjob() # tell the worker to ask for another job, asynchronously (one-way)
dataset/ETHPy150Open largelymfs/topical_word_embeddings/TWE-1/gensim/models/lsi_dispatcher.py/Dispatcher.jobdone/original