Python里如何终止一个线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python里如何终止一个线程相关的知识,希望对你有一定的参考价值。
import threading, time
class Hider(threading.Thread):
def __init__(self, cond, name):
super(Hider, self).__init__()
self.cond = cond
self.name = name
def run(self):
print self.name
def stop(self):
super(Hider, self).__stop()
con = threading.Condition()
hider = Hider(con,'hider')
hider.start()
hider.stop()
这里会报错
AttributeError: 'Hider' object has no attribute '_Hider__stop'
Python用sleep停止一个线程的运行,而不影响主线程的运行,案例代码如下:
from threading import *import time
class MyThread(Thread):
def run (self):
self.ifdo = True;
while self.ifdo:
print \'I am running...\'
time.sleep(2)
def stop (self):
print \'I am stopping it...\'
self.ifdo = False;
tr = MyThread()
tr.setDaemon(True)
tr.start()
print \'I will stop it...\'
time.sleep(5)
tr.stop()
tr.join() 参考技术A 在线程里添加一个结束标识,想要结束线程时吧标识置为True,可以结束线程
Hider和它的父类threading.Thread都没有__stop参数,当然会报错了 参考技术B 但是如果线程里的run里运行os.system('adb logcat')之类的不能停止的进程
此线程如何终止,光用标识符是不可以啊。 参考技术C 没有__stop,没有办法停止。
run执行完自然会终止。
python每个线程消费不用数据
参考技术A 关于python每个线程消费不用数据相关资料如下python kafka多线程消费数据
1、打印每个线程id,满足预期,开启了8个线程,每个线程号都不一样;
2、查看kafka状态,也能满足预期,每个分区的消费者id都是不一样的,下面第二个图是开启一个消费者时的状态,每个分区的消费者id都是相同的;对比之下能满足需求;
以上是关于Python里如何终止一个线程的主要内容,如果未能解决你的问题,请参考以下文章
[编程][JAVA]在JAVA中如何终止线程中socket.accpet() ? 端口一直被占用
如何在框架关闭时终止或杀死python GUI应用程序中的子线程