目录
线程的其它方法
Thread实例对象的方法
1.is_alive()用来判断线程是否还在运行活着
代码
import time
from threading import Thread
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
print(t.is_alive()) # 返回线程是否是活动的,返回True即为活动的,返回False即为不活动的
print(t2.is_alive()) # 这里我没有让t2的线程开启所以返回False
结果如图

2.getName返回该线程的名
代码
import time
from threading import Thread
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
# 返回线程名
print(t.getName()) # 返回线程名字,这个方法在用的时候会有报错的可能,但是不影响使用,
print(t2.getName()) # 返回线程t2的名字
结果如图

这个方法在使用的时候会报错但是不影响功能的实现,它报错是因为这个方法被弃用了,不推荐使用了,所以这个方法了解就行了少用为好。
3.setName设置线程名
代码
import time
from threading import Thread
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
# 设置线程名字
t.setName('jw') # 这里给t的线程名设置为jw
t2.setName('zy') # 这里给t2的线程名设置为zy
# 返回线程名
print(t.getName()) # 返回线程名字,这个方法在用的时候会有报错的可能,但是不影响使用,
print(t2.getName()) # 返回线程t2的名字
结果如图

然后这个方法也被弃用了,可以得到结果但是尽力少用
threading模块提供的一些方法
1.currentThread()返回当前的线程变量
在子线程就返回子线程的变量(线程名、pid等) ,在主线程就返回主线程的变量(线程名、pid等)
代码
import time
from threading import Thread, currentThread, enumerate, activeCount
def task():
print('子线程start')
print('在子线程中')
time.sleep(2)
print('子线程end')
print(currentThread()) # 这里输出的是子线程的pid
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
t2.start()
print(currentThread())#这里输出的是主线程的pid
结果如下

然后也可以只输出线程的名字
代码如下
#currentThread只输出线程名
import time
from threading import Thread, currentThread, enumerate, activeCount
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
print(currentThread().name) # 这里输出的是子线程的pid
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
t2.start()
print(currentThread().name)#这里输出的是主线程的pid
结果如图

然后这个方法也是一样被弃用了,少用就行
2.enumerate()返回一个包含正在运行的线程的list,正在运行指线程启动后、结束前,不包括启动前和终止后的线程
代码如下
#enumerate的用法
import time
from threading import Thread, currentThread, enumerate, activeCount
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
t2.start()
print(enumerate())#返回一个正在运行的线程的list
结果如下

这个方法没有被弃用,同时它的功能也比currentThread强得多。
3.activeCount()返回正在运行的线程数据,与len(threading.enumerate())有相同的结果
代码如下
#enumerate的用法
import time
from threading import Thread, currentThread, enumerate, activeCount
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
t2.start()
#这里打印正在运行的线程数量
print(activeCount())
结果如下

这个方法也是被弃用了,但是下面的方法就可以替代这个方法
然后还有一个格式与这个方法结果一样
代码如下
#enumerate的用法
import time
from threading import Thread, currentThread, enumerate, activeCount
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)
t2 = Thread(target=task)
t.start()
t2.start()
#这里打印正在运行的线程数量
print(activeCount())
print(len(enumerate()))#返回正在运行的线程数量
结果如图
