杀死线程不起作用

Killing a thread does not work

我有一个简单的线程调用:

aThread = threading.Thread(target=singleDriverThread, args=(d[0]))

然后我开始它 (aThread.start)

当我需要停止我的线程时:

aThread.join()

但线程保持 运行..帮助?

线程将继续 运行 直到可调用 singleDriverThread returns.

示例:

如果您的可调用 singleDriverThread 看起来像这样,代码将永远不会停止:

def singleDriverThread():
    while True:
        # do stuff in eternal loop
        pass

但是如果 singleDriverThread 看起来像这样:

def singleDriverThread():
     # do stuff
     return

然后可调用对象将 return 并且该线程将与您的其余代码结合。

如果你想停止一个线程,你应该杀死或发信号通知线程。 SO answer and this 处理停止线程。 join 方法只等待线程退出。

一般来说,要让一个线程优雅地停止,有一个与之通信的通道是很有用的,这样就可以传递一个停止消息/信号。