code: def instaprint(figure='gcf', arguments='', threaded=False, file_format='pdf'):
      
  
      global _settings
  
      if 'instaprint' not in _settings.keys():
          print("No print command setup. Set the user variable settings['instaprint'].")
          return
  
      if   figure=='gcf': figure=[_pylab.gcf().number]
      elif figure=='all': figure=_pylab.get_fignums()
      if not getattr(figure,'__iter__',False): figure = [figure]
  
      print("figure numbers in queue:", figure)
  
      figures=[]
      for n in figure: figures.append(_pylab.figure(n))
  
      # now run the ps printing command
      if threaded:
          # store the canvas type of the last figure
          canvas_type = type(figures[-1].canvas)
  
          # launch the aforementioned function as a separate thread
          _thread.start_new_thread(_print_figures, (figures,arguments,file_format,))
  
          # wait until the thread is running
          _time.sleep(0.25)
  
          # wait until the canvas type has returned to normal
          t0 = _time.time()
          while not canvas_type == type(figures[-1].canvas) and _time.time()-t0 < 5.0:
              _time.sleep(0.1)
          if _time.time()-t0 >= 5.0:
              print("WARNING: Timed out waiting for canvas to return to original state!")
  
          # bring back the figure and command line
          _pylab.draw()
  
      else:
          _print_figures(figures, arguments, file_format)
          _pylab.draw()
docs: Quick function that saves the specified figure as a postscript and then
      calls the command defined by spinmob.prefs['instaprint'] with this
      postscript file as the argument.
  
      figure='gcf'    can be 'all', a number, or a list of numbers