ske*_*rit 46 python multithreading
对于连接到我的服务器的每个客户端,我生成一个新线程,如下所示:
# Create a new client
c = Client(self.server.accept(), globQueue[globQueueIndex], globQueueIndex, serverQueue )
# Start it
c.start()
# And thread it
self.threads.append(c)
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以使用以下代码关闭所有线程:
# Loop through all the threads and close (join) them
for c in self.threads:
c.join()
Run Code Online (Sandbox Code Playgroud)
但我怎么能关闭线程内该线程?
Rei*_*ica 56
当你启动一个线程时,它开始执行你给它的一个函数(如果你正在扩展threading.Thread,那么函数将是run()).要结束线程,只需从该函数返回.
根据这个,你也可以调用thread.exit(),这将抛出一个异常,它将以静默方式结束线程.
Eri*_*sum 19
有点晚了,但是_is_running当我想关闭时,我使用一个变量告诉线程.它易于使用,只需在线程类中实现stop()即可.
def stop(self):
self._is_running = False
Run Code Online (Sandbox Code Playgroud)
并在run()循环中while(self._is_running)
sys.exit()从模块怎么样sys.
如果sys.exit()从一个线程中执行,它将仅关闭该线程.
这里的答案说明了这一点:为什么sys.exit()在Python中的线程内调用时不会退出?
小智 5
如果你想强制停止你的线程:
thread._Thread_stop()
对我来说效果很好。
| 归档时间: |
|
| 查看次数: |
120035 次 |
| 最近记录: |