# 进程就是运行着的程序
# 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白月黑羽视频多线程笔记相关推荐

  1. 白月黑羽python+selenium之SMS系统的练习

    笔记 练习用例的代码 # coding = utf-8 from selenium import webdriver import unittest import time from selenium ...

  2. 白月黑羽教python_白月黑羽Python在线教程

    推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...

  3. 白月黑羽python_白月黑羽Python在线教程

    推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...

  4. 白月黑羽教python之pytest:课后练习

    本博客记录了白月黑羽教python的pytest课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例表 2.代码文件布局 3. ...

  5. 白月黑羽教python之selenium:课后练习作业二

    白月黑羽教python之selenium:课后练习 最近自学了白月黑羽老师的自动化测试课程,并非课后作业的准确答案,只是为了个人学习记录,如有不足欢迎留言指点,谢谢大家. 前置条件,使用正确的管理员账 ...

  6. 白月黑羽教python之selenium:课后练习

    本博客记录了白月黑羽教python的selenium课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例及代码 2.注意点 3 ...

  7. 白月黑羽教python_其他 | 白月黑羽教Python

    都说Python执行效率不高,为什么还要学习它? 就像你买了一辆汽车,有人却说, 汽车开的比飞机慢多了,买什么汽车啊. 然而,生活中大部分的场合,用汽车比用飞机方便的多. 同样的道理通常你开发的程序( ...

  8. 白月黑羽教程小收获记录-python基础

    放上良心UP主的网址(点击跳转) 白月黑羽免费自学网站 python基础 python基础-B站 自己的记录 我们知道字符串可以用单引号,双引号,这两个基本上就是如果要输出的表达式有单引号,整体的字符 ...

  9. 白月黑羽python_白月黑羽来帮你分析现在是选择 Python3.6 还是 Python 3.7

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 选择 Python3.6 还是 Python 3.7? Python 3.7 已经发布了, 又有新版本玩喽!!但是有选择症的你,怎么办呢?像追剧一样,赶快 ...

最新文章

  1. 实现Operations Manager 2012 R2单一部署
  2. 【Linux】crontab命令详解
  3. UNIX 动态库和静态库
  4. Kogito人机规则-第1部分:进一步解决流口水
  5. 银行技术类2020校园招聘笔试
  6. sqlserver如何从周一计算周_纯零基础,花10周时间,完全搞定Python,有没有可能?...
  7. JavaScript代码规范和性能整理
  8. java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
  9. (22)npm scripts 实践—构建样式文件
  10. 使用根轨迹分析的动态补偿设计
  11. 亲戚的孩子说要寄养在我家,上学方便,怎么明确的拒绝?
  12. 台式电脑显示器黑屏但灯亮_显示器黑屏无信号 但电脑一直在运行的原因和解决办法...
  13. 安卓手机反应慢又卡怎么办_安卓手机出现卡顿反应慢的具体处理方法
  14. Json转对象 调用toBean
  15. SD五一联赛(加权并查集)
  16. k3系统的架构及简介
  17. smb协议讲解_SMB/CIFS协议解析(一)
  18. 计算机中的微信无法启动,微信电脑版无法直接打开EXCEL:为什么电脑打不开excel表格...
  19. 数值计算之 拟合法,线性拟合,多项式拟合
  20. SQL语言的基础操作(二)

热门文章

  1. 10个java调试技巧
  2. 瑞典安百拓集团将把日本工厂搬到南京;好时在马来西亚开设新研发中心 | 美通企业日报...
  3. 中创|Facebook、腾讯、字节跳动纷纷加码, 元宇宙才是互联网的未来?
  4. 读书笔记第一篇:知乎高赞回答
  5. 类属性,实例属性,私有属性,类方法,实例方法,静态方法,私有方法,魔法方法
  6. Halcon 《ML_MLP》网格缺陷检测
  7. 40岁了去华为19级,薪酬翻倍,但现在比较稳定,值得吗?
  8. Python解决线性规划问题
  9. 2021年所有干货文章导航!#内有惊喜
  10. 医院设备管理系统-项目模板-毕业设计