线程编程(Thread)
线程基本概念
1.什么是线程
【1】 线程被称为轻量级的进程
【2】 线程也可以使用计算机多核资源,是多任务编程方式
【3】 线程是系统分配内核的最小单元
【4】 线程可以理解为进程的分支任务
2.线程特征
【1】 一个进程中可以包含多个线程
【2】 线程也是一个运行行为,消耗计算机资源
【3】 一个进程中的所有线程共享这个进程的资源
【4】 多个线程之间的运行互不影响各自运行
【5】 线程的创建和销毁消耗资源远小于进程
【6】 各个线程也有自己的ID等特征
threading模块创建线程
【1】 创建线程对象
from threading import Thread
t = Thread()
功能:创建线程对象
参数:target 绑定线程函数
args 元组 给线程函数位置传参
- kwargs 字典 给线程函数键值传参
【2】 启动线程
t.start()
【3】 回收线程
t.join([timeout])
1 import threading 2 from time import sleep 3 import os 4 5 a = 1 6 7 8 # 线程函数 9 def music(): 10 for i in range(3): 11 sleep(2) 12 print(os.getpid(), "播放黄河大合唱") 13 global a 14 print("a = ", a) 15 a = 10000 16 17 18 # 创建线程对象 19 t = threading.Thread(target=music) 20 t.start() # 启动线程 21 22 for i in range(4): 23 sleep(1) 24 print(os.getpid(), "播放葫芦娃") 25 26 t.join() # 回收线程 27 28 # 7464 播放葫芦娃 29 # 7464 播放黄河大合唱 30 # 7464 播放葫芦娃 31 # 7464 播放葫芦娃 32 # 7464 播放黄河大合唱 33 # 7464 播放葫芦娃 34 # 7464 播放黄河大合唱 35 # a = 1
1 from threading import Thread 2 from time import sleep 3 import os 4 5 # 含有参数的线程函数 6 def fun(sec,name): 7 print("线程函数参数",os.getpid()) 8 sleep(sec) 9 print("%s 线程完毕"%name) 10 11 # 创建多个线程 12 jobs = [] 13 for i in range(5): 14 t = Thread(target = fun,args=(2,), 15 kwargs={'name':'T%d'%i}) 16 jobs.append(t) 17 t.start() 18 19 for i in jobs: 20 i.join() 21 22 # 线程函数参数 9224 23 # 线程函数参数 9224 24 # 线程函数参数 9224 25 # 线程函数参数 9224 26 # 线程函数参数 9224 27 # T2 线程完毕 28 # T1 线程完毕 29 # T0 线程完毕 30 # T3 线程完毕 31 # T4 线程完毕