docs: def start_update(self, draw=None):
          """
          Conduct the registered plot updates
  
          This method starts the updates from what has been registered by the
          :meth:`update` method. You can call this method if you did not set the
          `auto_update` parameter when calling the :meth:`update` method to True
          and when the :attr:`no_auto_update` attribute is True.
  
          Parameters
          ----------
          draw: bool or None
              If True, all the figures of the arrays contained in this list will
              be drawn at the end. If None, it defaults to the `'auto_draw'``
              parameter in the :attr:`psyplot.rcParams` dictionary
  
          See Also
          --------
          :attr:`no_auto_update`, update"""
          def worker(arr):
              results[arr.psy.arr_name] = arr.psy.start_update(
                  draw=False, queues=queues)
          if len(self) == 0:
              return
  
          results = {}
          threads = [Thread(target=worker, args=(arr,),
                            name='update_%s' % arr.psy.arr_name)
                     for arr in self]
          jobs = [arr.psy._njobs for arr in self]
          queues = [Queue() for _ in range(max(map(len, jobs)))]
          # populate the queues
          for i, arr in enumerate(self):
              for j, n in enumerate(jobs[i]):
                  for k in range(n):
                      queues[j].put(arr.psy.arr_name)
          for thread in threads:
              thread.setDaemon(True)
          for thread in threads:
              thread.start()
          for thread in threads:
              thread.join()
          if draw is None:
              draw = rcParams['auto_draw']
          if draw:
              self(arr_name=[name for name, adraw in six.iteritems(results)
                             if adraw]).draw()
              if rcParams['auto_show']:
                  self.show()