线程
一:线程的基础概念#
(1)什么是线程:进程/线程其实都是虚拟单位 帮助我们描述某种事物
(2)线程进程的区别
(1)进程:
(1)资源单位
(2)其帮我提供程序运行所需要的资源
(2)线程:
(1)执行单位
(2)帮助我们真正的执行程序
例如:内存相当于一个工厂,程序就是工厂的车间,线程就是车间的流水线来执行车间的工作
PS:每一个进程都自带一个线程 进程提供程序运行所需要的资源 线程用来真正的执行程序
(3)线程的好处
开进程:
(1)开进程:申请内存空间 浪费资源
(2)代码拷贝:耗费资源
开线程:
(1)一个进程内可以开启多个线程
(2)线程之间数据是共享的
PS:使用线程的好处 节省内存资源
(3)线程的使用方法:
方法一:

from threading import Thread import time def test(name): print('%s running' % name) time.sleep(2) print('%s over' % name) if __name__ == '__main__': t = Thread(target=test, args=('SR',)) t.start() print('主')
方法二:

from threading import Thread import time class MyThread(Thread): def __init__(self,name): super().__init__() self.name = name def run(self): print('%s is running'%self.name) time.sleep(3) print('%s is over'%self.name) t = MyThread('egon') t.start() print('主')
(3)线程之间的属性方法

import os from threading import current_thread def test(): print(current_thread().name) print(os.getpid()) # 8248 t = Thread(target=test) t.start() print(current_thread().name) print(os.getpid()) # 8248
PS:一个进程内可以有多个线程

from threading import active_count def test(): print('hello') t = Thread(target=test) t.start() print(active_count())
(4)守护线程:
(1)主线程结束此时守护线程立马结束
(2)如果是非守护进程 如果主线程结束 其余子线程不会立马结束 需要等到所有子线程结束才能立马结束
因为:主线程结束立马主进程结束 其会回收资源空间 导致其余子线程不能再继续执行
(5)线程之间是可以相互通信的
from threading import Thread money = 666 def test(): global money money = 999 t = Thread(target=test) t.start() t.join() print(money) # 999
(6)互斥锁

n = 100 def task(mutex): global n mutex.acquire() tmp = n time.sleep(0.1) n = tmp - 1 mutex.release() t_list = [] mutex = Lock() for i in range(100): t = Thread(target=task,args=(mutex,)) t.start() t_list.append(t) for t in t_list: t.join() print(n)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!