class_docstr: Dispatcher object that communicates and coordinates individual workers.
  
  Warnings
  --------
  There should never be more than one dispatcher running at any one time.
class_docstr_tok: ["Dispatcher","object","that","communicates","and","coordinates","individual","workers",".","Warnings","--","--","--","--","There","should","never","be","more","than","one","dispatcher","running","at","any","one","time","."]
docstr: Merge projections from across all workers and get the final projection.
  
  Returns
  -------
  :class:`~gensim.models.lsimodel.Projection`
      The current projection of the total model.
docstr_tok: ["Merge","projections","from","across","all","workers","and","get","the","final","projection",".","Returns","--","--","--","-",":","class",":","`","~gensim.models.lsimodel.Projection","`","The","current","projection","of","the","total","model","."]
code: def getstate(self):
      """Merge projections from across all workers and get the final projection.
  
      Returns
      -------
      :class:`~gensim.models.lsimodel.Projection`
          The current projection of the total model.
  
      """
      logger.info("end of input, assigning all remaining jobs")
      logger.debug(
          "jobs done: %s, jobs received: %s",
          self._jobsdone,
          self._jobsreceived,
      )
      while self._jobsdone < self._jobsreceived:
          time.sleep(0.5)  # check every half a second
  
      # TODO: merge in parallel, so that we're done in `log_2(workers)` merges,
      # and not `workers - 1` merges!
      # but merging only takes place once, after all input data has been processed,
      # so the overall effect would be small... compared to the amount of coding :-)
      logger.info("merging states from %i workers", len(self.workers))
      workers = list(self.workers.items())
      result = workers[0][1].getstate()
      for workerid, worker in workers[1:]:
          logger.info("pulling state from worker %s", workerid)
          result.merge(worker.getstate())
      logger.info("sending out merged projection")
      return result
  
imports: import os
  import sys
  import logging
  import argparse
  import threading
  import time
  from queue import Queue
  import Pyro4
  from gensim import utils
label_desc: Use image node_id 6 for calling the Dispatcher obj's underlying member method code with example usage: obj.getstate() and returns: result