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里如何终止一个线程的主要内容,如果未能解决你的问题,请参考以下文章

Qt中如何设置按钮点击终止线程

[编程][JAVA]在JAVA中如何终止线程中socket.accpet() ? 端口一直被占用

如何在框架关闭时终止或杀死python GUI应用程序中的子线程

在python里,如果主线程结束,但子线程不想让它结束,该怎么办?

python停止线程?暂停?

C语言如何终止线程