Here's an example with a thread that will print how much time has elapsed since it started and can be stopped from the main loop.
import time import threading class ElapsedTimeThread(threading.Thread): """"Stoppable thread that prints the time elapsed""" def __init__(self): super(ElapsedTimeThread, self).__init__() self._stop_event = threading.Event() def stop(self): self._stop_event.set() def stopped(self): return self._stop_event.is_set() def run(self): thread_start = time.time() while not self.stopped(): print("\rElapsed Time {:.3f} seconds".format(time.time()-thread_start), end="") #include a delay here so the thread doesn't uselessly thrash the CPU time.sleep(0.01) if __name__ == "__main__": start = time.time() thread = ElapsedTimeThread() thread.start() # do something time.sleep(5) # something is finished so stop the thread thread.stop() thread.join() print() # empty print() to output a newline print("Finished in {:.3f} seconds".format(time.time()-start))
This gives the following output, with the Elapsed Time counting up from zero and being overwritten:
J:\>python thr_time.py Elapsed Time 5.000 seconds Finished in 5.001 seconds
Note that this code is in Python 3. More info on stopping threads here & here.
Let me know if you'd like clarification on any portions.
os.fork().threading.