python白月黑羽视频多线程笔记
# 进程就是运行着的程序 # windows下面打开任务管理器,里面显示了当前系统上运行着的进程 # 程序没有运行的时候,它们的程序代码文件存储在磁盘中,就是那些扩展名为.exe文件 # 系统中每个进程里面至少包含一个线程 # 线程是操作系统创建的,每个线程对应一个代码执行的数据结构,保存了代码执行过程中重要的状态信息 # 我们前面写的python程序,里面虽然没有创建线程的代码,但实际上,当python解释器程序运行起来(成为一个进程),OS就自动的创建一个线程,通常称为主线程,在这个主线程里面执行代码指令 # cpu多核,每个核都可以执行代码 # 要运行程序里的代码,操作系统就会分配一个cpu核心去执行该代码 # 如果是一个cpu核心执行这个函数,压缩一个文件要10秒钟的话,那么压缩4给文件,就要40秒 # 能够让4个cpu核心能同时去执行压缩函数,理论上就只要10秒 # 单线程,只会有一个cpu核心去执行,那么就需要40秒 # 同时让多个cpu执行任务,我们的程序必须写创建新的线程的代码# 让多个cpu核心同时去执行任务,我们程序必须创建多个线程,让cpu执行多个线程对应的代码 # 应用程序必须通过操作系统提供的系统调用,请求操作系统分配一个新的线程 # python3将系统调用创建线程的功能封装在标准库threading中print('主线程执行代码') # 从threading库中导入Thread类 from threading import Thread, Lock from time import sleep# # 定义一个函数,作为新线程执行的入口函数 # def threadFun(arg1, arg2): # print('子线程开始') # print(f'线程函数参数是:{arg1},{arg2}') # sleep(5) # print('子线程结束3333') # # # 创建Thread类的实例对象,并且指定新线程的入口函数 # thread = Thread(target=threadFun, args=("参数1", "参数2")) # # # 执行start方法,就会创建新线程 # # 并且新线程会去执行入口函数里面的代码 # # 这时候这个进程有两个线程了 # thread.start() # # # 主线程的代码执行子线程对象的join方法 # # 就会等待子线程结束,才继续执行下面的代码 # thread.join() # print('主线程结束。。。。。')# 有的时候,一个线程需要等待其他的线程结束,如果需要根据其他线程运行结束后的结果行处理 # 可以使用Thread对象的join方法 # thread.join() # 如果一个线程A的代码调用了对应线程B的Thread对象的join方法,线程A就会停止继续执行代码 # 等待线程B结束。线程B结束后,线程A才继续执行后续的代码 # 所以主线程在执行上面的代码时,就暂停在此处,一直要等到线程执行完毕,退出后,才会继续执行后续代码# 做多线程开发,经常遇到这样的情况:多个线程立里面的代码需要访问同一个公共的数据对象 # 这个公共的数据对象可以是任何类型,比如一个列表、字典、或自定义的对象。 # 有的时候,程序需要防止线程的代码同时操作公共数据对象。否则,就有可能导致数据的访问互相冲突影响 # 例如:模拟一个银行系统,用户可以往自己的账号上存钱bank = {'byhy': 0 }bankLock = Lock() # 定义一个函数,作为新线程执行的入口函数 def deposit(theadidx, amount):# 操作共享数据前,申请获取锁bankLock.acquire()balance = bank['byhy']# 执行一些任务,耗费0.1秒sleep(0.1)bank['byhy'] = balance + amountprint(f'子线程{theadidx}结束')# 操作完共享数据后,申请释放锁bankLock.release()theadlist = [] for idx in range(10):thread = Thread(target=deposit, args=(idx, 1))thread.start()# 把线程对象都存储到threadlist中theadlist.append(thread)for thread in theadlist:thread.join()print('主线程结束') print(f'最后我们的账号余额为{bank["byhy"]}') #大家都加一快钱变成10快钱
python白月黑羽视频多线程笔记相关推荐
- 白月黑羽python+selenium之SMS系统的练习
笔记 练习用例的代码 # coding = utf-8 from selenium import webdriver import unittest import time from selenium ...
- 白月黑羽教python_白月黑羽Python在线教程
推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...
- 白月黑羽python_白月黑羽Python在线教程
推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...
- 白月黑羽教python之pytest:课后练习
本博客记录了白月黑羽教python的pytest课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例表 2.代码文件布局 3. ...
- 白月黑羽教python之selenium:课后练习作业二
白月黑羽教python之selenium:课后练习 最近自学了白月黑羽老师的自动化测试课程,并非课后作业的准确答案,只是为了个人学习记录,如有不足欢迎留言指点,谢谢大家. 前置条件,使用正确的管理员账 ...
- 白月黑羽教python之selenium:课后练习
本博客记录了白月黑羽教python的selenium课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例及代码 2.注意点 3 ...
- 白月黑羽教python_其他 | 白月黑羽教Python
都说Python执行效率不高,为什么还要学习它? 就像你买了一辆汽车,有人却说, 汽车开的比飞机慢多了,买什么汽车啊. 然而,生活中大部分的场合,用汽车比用飞机方便的多. 同样的道理通常你开发的程序( ...
- 白月黑羽教程小收获记录-python基础
放上良心UP主的网址(点击跳转) 白月黑羽免费自学网站 python基础 python基础-B站 自己的记录 我们知道字符串可以用单引号,双引号,这两个基本上就是如果要输出的表达式有单引号,整体的字符 ...
- 白月黑羽python_白月黑羽来帮你分析现在是选择 Python3.6 还是 Python 3.7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 选择 Python3.6 还是 Python 3.7? Python 3.7 已经发布了, 又有新版本玩喽!!但是有选择症的你,怎么办呢?像追剧一样,赶快 ...
最新文章
- 实现Operations Manager 2012 R2单一部署
- 【Linux】crontab命令详解
- UNIX 动态库和静态库
- Kogito人机规则-第1部分:进一步解决流口水
- 银行技术类2020校园招聘笔试
- sqlserver如何从周一计算周_纯零基础,花10周时间,完全搞定Python,有没有可能?...
- JavaScript代码规范和性能整理
- java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
- (22)npm scripts 实践—构建样式文件
- 使用根轨迹分析的动态补偿设计
- 亲戚的孩子说要寄养在我家,上学方便,怎么明确的拒绝?
- 台式电脑显示器黑屏但灯亮_显示器黑屏无信号 但电脑一直在运行的原因和解决办法...
- 安卓手机反应慢又卡怎么办_安卓手机出现卡顿反应慢的具体处理方法
- Json转对象 调用toBean
- SD五一联赛(加权并查集)
- k3系统的架构及简介
- smb协议讲解_SMB/CIFS协议解析(一)
- 计算机中的微信无法启动,微信电脑版无法直接打开EXCEL:为什么电脑打不开excel表格...
- 数值计算之 拟合法,线性拟合,多项式拟合
- SQL语言的基础操作(二)