I want to log the real time stdout from a different Class to a log file. Here is my demo code. Code works well. But it is waiting for the sample function to finish. I want to run it in parallel. So the log file will written in same time of stdout prints.
import sys
import time
class Logger(object):
    def __init__(self):
        self.terminal = sys.stdout
        self.log = open("log.txt", "a")
    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)  
class sample:
  def __init__(self):
    print "TEST"
    time.sleep(5)
if __name__ == "__main__":
  a = sample()
  sys.stdout = Logger()