Blocking until condition is met
You don't need a self.is_dead. You simply need to block until the thread is complete. For that, we have join():

def stop(self):
    self.is_alive = False
    self.process.join()