class_docstr: Class to manage a pool of backgrounded threaded jobs.
  
  Below, we assume that 'jobs' is a BackgroundJobManager instance.
  
  Usage summary (see the method docstrings for details):
  
    jobs.new(...) -> start a new job
    
    jobs() or jobs.status() -> print status summary of all jobs
  
    jobs[N] -> returns job number N.
  
    foo = jobs[N].result -> assign to variable foo the result of job N
  
    jobs[N].traceback() -> print the traceback of dead job N
  
    jobs.remove(N) -> remove (finished) job N
  
    jobs.flush() -> remove all finished jobs
    
  As a convenience feature, BackgroundJobManager instances provide the
  utility result and traceback methods which retrieve the corresponding
  information from the jobs list:
  
    jobs.result(N) <--> jobs[N].result
    jobs.traceback(N) <--> jobs[N].traceback()
  
  While this appears minor, it allows you to use tab completion
  interactively on the job manager instance.
code: def traceback(self, job=None):
      if job is None:
          self._update_status()
          for deadjob in self.dead:
              print("Traceback for: %r" % deadjob)
              self._traceback(deadjob)
              print()
      else:
          self._traceback(job)
  
imports: from __future__ import print_function
  import sys
  import threading
  from IPython import get_ipython
  from IPython.core.ultratb import AutoFormattedTB
  from logging import error
  from IPython.utils.py3compat import string_types
label_desc: Use image node_id 17 for calling the BackgroundJobManager obj's underlying member method code with example usage: obj.traceback(job) without return types