[python] How to close a thread from within?

For every client connecting to my server I spawn a new thread, like this:

# Create a new client
c = Client(self.server.accept(), globQueue[globQueueIndex], globQueueIndex, serverQueue )

# Start it
c.start()

# And thread it
self.threads.append(c)

Now, I know I can close all the threads using this code:

    # Loop through all the threads and close (join) them
    for c in self.threads:
        c.join()

But how can I close the thread from within that thread?

This question is related to python multithreading

The answer is


A little late, but I use a _is_running variable to tell the thread when I want to close. It's easy to use, just implement a stop() inside your thread class.

def stop(self):
  self._is_running = False

And in run() just loop on while(self._is_running)


If you want force stop your thread: thread._Thread_stop() For me works very good.


How about sys.exit() from the module sys.

If sys.exit() is executed from within a thread it will close that thread only.

This answer here talks about that: Why does sys.exit() not exit when called inside a thread in Python?