①. 线程被称为轻量级的进程
②. 线程也可以使用计算机多核资源,是多任务编程方式
③. 线程是系统分配内核的最小单元
④. 线程可以理解为进程的分支任务
①. 一个进程中可以包含多个线程
②. 线程也是一个运行行为,消耗计算机资源
③. 一个进程中的所有线程共享这个进程的资源
④. 多个线程之间的运行互不影响各自运行
⑤. 线程的创建和销毁消耗资源远小于进程
⑥. 各个线程也有自己的ID等特征
①.创建线程对象
from threading import Thread
t = Thread()
功能:创建线程对象
参数:target 绑定线程函数
args 元组 给线程函数位置传参
kwargs 字典 给线程函数键值传参
②.启动线程
t.start()
③.回收线程
t.join([timeout])
from threading import Thread
from time import sleep
import os
# 线程函数
def game():
for i in range(3):
sleep(2)
print(os.getpid(),"后裔:万箭齐发")
# 创建线程对象
t = Thread(target=game)
t.start() # 启动线程 执行game
for i in range(4):
sleep(1)
print(os.getpid(),"后裔:嗑药回血")
t.join() # 回收线程资源
from threading import Thread
from time import sleep
import os
# 含有参数的线程函数
def fun(sec,name):
print("线程函数参数",os.getpid())
sleep(sec)
print("%s 线程完毕"%name)
# 创建多线程
jobs = []
for i in range(5):
t = Thread(target=fun,args=(2,),kwargs={'name':"T%d"%i})
jobs.append(t)
t.start()
for i in jobs:
i.join()
t.name 线程名称
t.setName() 设置线程名称
t.getName() 获取线程名称
t.is_alive() 查看线程是否在生命周期
t.daemon 设置主线程和分支线程的退出关系
t.setDaemon() 设置daemon属性值
t.isDaemon() 查看daemon属性值
from threading import Thread
from time import sleep
def fun():
sleep(3)
print("线程属性测试")
t = Thread(target=fun, name="MyThread")
# 主线程退出分支线程也退出
t.setDaemon(True)
t.start()
t.setName("MyThread")
print("Name:", t.getName()) # 线程名称
print("Alive:", t.is_alive()) # 线程生命周期
print("is Daemon", t.isDaemon())
①.继承Thread类
②. 重写__init__方法添加自己的属性,使用super加载父类属性
③.重写run方法
①.实例化对象
②.调用start自动执行run方法
③.调用join回收线程
from threading import Thread
from time import sleep, ctime
class MyThread(Thread):
def __init__(self, target=None,
args=(), kwargs={}):
super().__init__()
self.target = target
self.args = args
self.kwargs = kwargs
def run(self):
self.target(*self.args, **self.kwargs)
# ***************************
# 通过完成上面的MyThread使程序正常运行
# 通过下面程序可以让player作为线程运行
# player只是测试函数,名称和参数均不确定
# ***************************
def player(sec, song):
for i in range(3):
print("Playing %s : %s" % (song, ctime()))
sleep(sec)
t = MyThread(target=player, args=(3,),
kwargs={'song': '凉凉'})
t.start()
t.join()