spacepaste

  1.  
  2. class StreamWatcher:
  3. def stdout_watcher(self, identifier, stream):
  4. #for line in stream:
  5. for line in iter(stream.readline,b''):
  6. print line
  7. if not stream.closed:
  8. stream.close()
  9. print "-i- Thread Terminating : ", identifier,"\n"
  10. def stderr_watcher(self, identifier, stream):
  11. #for line in stream:
  12. for line in iter(stream.readline,b''):
  13. print (identifier, line)
  14. if not stream.closed:
  15. stream.close()
  16. print "-i- Thread Terminating : ", identifier, "\n"
  17. class something
  18. def somefunc
  19. #did stuff
  20. proc = subprocess.Popen([PathToCurrentPythonInterpreter, toolPath], stderr=subprocess.PIPE, stdout=subprocess.PIPE, env=env, bufsize=1)
  21. #create new stdout and stderr stream listener objects
  22. m=StreamWatcher()
  23. n=StreamWatcher()
  24. #create new threads for each listener, when the listener hears something it prints it to the GUI console log area
  25. Thread(target=m.stdout_watcher, name='stdout-watcher', args=('STDOUT', proc.stdout)).start()
  26. Thread(target=n.stderr_watcher, name='stderr-watcher', args=('STDERR', proc.stderr)).start()
  27.