第1章 Python基础 Day1 基本语法
1.1 编程语言介绍与分类
1.2 Python介绍、发展趋势
1.3 Python环境安装
1.4 开发你的第一个Python程序
1.5 选择最好用的PyCharm IDE
1.6 变量
1.7 注释
1.8 基本数据类型
1.9 读取用户指令
1.10 格式化打印
1.11 运算符
1.12 流程控制之if...else
1.13 流程控制之while循环
1.14 本章练习题&作业
第2章 Python基础 Day2 数据类型和文件操作
2.1 上章补充-变量的创建过程
2.2 上章补充-身份运算和None
2.3 细讲数据类型-列表
2.4 细讲数据类型-元组
2.5 细讲数据类型-字符串
2.6 细讲数据类型-字典
2.7 细讲数据类型-集合
2.8 秒懂二进制
2.9 字符编码之文字是如何显示的
2.10 秒懂十六进制
2.11 hash是个什么东西
2.12 用Python操作文件
2.13 本章练习题&作业
第3章 Python 基础 Day3 函数编程
3.1 上章补充-Bytes类型
3.2 上章补充-字符编码的转换
3.3 上章补充-深浅copy
3.4 函数来了
3.5 函数返回值与作用域
3.6 嵌套&匿名&高阶函数
3.7 函数的递归
3.8 内置函数
3.9 名称空间
3.10 闭包是个什么东西?
3.11 函数进阶-装饰器
3.12 列表生成式
3.13 生成器
3.14 迭代器
3.15 练习题&作业
第4章 Python基础 Day4 常用模块
4.1 模块介绍与导入
4.2 第3方开源模块的安装使用
4.3 系统调用os模块
4.4 系统调用sys模块
4.5 time & datetime模块
4.6 random随机模块
4.7 序列化pickle&json模块
4.8 hashlib 加密
4.9 文件copy模块shutil
4.10 正则表达式re模块
4.11 软件开发目录设计规范
4.12 包&跨模块代码调用
4.13 练习题&作业
第5章 Python核心编程 Day5 面向对象编程
5.1 面向对象来了
5.2 面向对象语法
5.3 对象间的交互、组合
5.4 三大特性之-继承
5.5 三大特性之-封装
5.6 三大特性之-多态
5.7 作业&练习题
第6章 Python核心编程 Day6 面向对象编程进阶
6.1 类方法、静态方法
6.2 属性方法property
6.3 神奇的反射
6.4 类的双下线方法
6.5 用type动态创建一个类
6.6 isinstance\issubclass
6.7 异常处理
6.8 作业&练习题
第7章 核心编程 Day7 Socket网络编程
7.1 C/S架构介绍
7.2 TCP/IP 各层详解
7.3 Socket介绍
7.4 Socket代码实例
7.5 粘包现象与解决方案
7.6 通过socket发送文件
7.7 本章总结
第8章 核心编程 Day8 并发编程
8.1 操作系统介绍
8.2 并发编程多进程之进程理论
8.3 并发编程多进程之开启进程的两种方式
8.4 并发编程多进程之join方法
8.5 并发编程多进程之守护进程
8.6 并发编程多进程之互斥锁
8.7 并发编程多进程之队列
8.8 并发编程多进程之生产者消费者模型
8.9 并发编程多线程之线程理论
8.10 并发编程多线程之开启线程的两种方式
8.11 并发编程多线程之多线程与多进程的区别
8.12 并发编程多线程之Thread对象的其他属性或方法
8.13 并发编程多线程之守护线程
8.14 并发编程多线程之GIL全局解释器锁
8.15 并发编程多线程之死锁现象与递归锁
8.16 并发编程多线程之信号量,Event,定时器
8.17 并发编程多线程之线程queue
8.18 并发编程多线程之进程池与线程池
8.19 并发编程之协程-协程介绍
8.20 并发编程之协程-greenlet模块
8.21 并发编程之协程-gevent模块
8.22 并发编程IO模型-IO模型介绍
8.23 并发编程IO模型-阻塞IO
8.24 并发编程IO模型-非阻塞IO
8.25 并发编程IO模型-多路复用IO
8.26 并发编程IO模型-异步IO
8.27 并发编程IO模型-IO模型比较分析
8.28 并发编程IO模型-selectors模块
8.29 本章小结
第9章 Mysql数据库开发
9.1 初识数据库-数据库管理软件的由来
9.2 初识数据库-数据库概述
9.3 初识数据库-mysql安装与基本管理
9.4 初识数据库-初识sql语句
9.5 库操作-库的增删改查
9.6 表操作-存储引擎介绍
9.7 表操作-表的增删改查
9.8 表操作-数据类型
9.9 表操作-数值类型
9.10 表操作-日期类型
9.11 表操作-字符串类型
9.12 表操作-枚举类型与集合类型
9.13 表操作-完整性约束
第7章 爬虫开发-requests模块学习
7.1 requests模块初始
7.2 requests案例实战
第21章 爬虫开发-爬虫基础简介
21.1 爬虫初识&价值探讨
21.2 爬虫合法性探究
21.3 爬虫初识深入
21.4 http&https协议
第9章 爬虫开发-数据解析
9.1 数据解析概述
9.2 数据解析---正则表达式
9.3 数据解析---bs4解析
9.4 数据解析---xpath解析
第10章 爬虫开发-验证码识别
10.1 验证码识别
10.2 验证码实战
第11章 requests模块高级操作
11.1 模拟登陆
11.2 requests模块的cookie处理
11.3 requests模块的代理IP操作
第13章 高性能异步爬虫
13.1 高性能异步爬虫---线程and线程池
13.2 高性能异步爬虫---异步协程
13.3 高性能异步爬虫---多任务异步协程
13.4 高性能异步爬虫---aiohttp
第25章 scrapy框架使用
25.1 scrapy简介
25.2 scrapy的数据持久化存储
25.3 scrapy基于Spider类的全站数据爬取
25.4 请求传参
25.5 scrapy图片数据爬取
25.6 scrapy中间件
25.7 scrapy中selenium的应用
第12章 动态渲染页面爬取
12.1 图片懒加载
12.2 selenium模块基本使用
12.3 基于selenium的爬虫案例
12.4 Pyppeteer模块使用
Python入门到精通
Java放弃之路
前端开发
Linux从小白到大神
并发编程多线程之线程理论
阅读量: 1358
# 本节重点 - 掌握什么是线程 - 掌握线程与进程的区别 本节时长需控制在30分钟内 ## 一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。 所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源。例如,北京地铁与上海地铁是不同的进程,而北京地铁里的13号线是一个线程,北京地铁所有的线路共享北京地铁所有的资源,比如所有的乘客可以被所有线路拉。 ## 二 线程与进程的区别 1. Threads share the address space of the process that created it; processes have their own address space. 2. Threads have direct access to the data segment of its process; processes have their own copy of the data segment of the parent process. 3. Threads can directly communicate with other threads of its process; processes must use interprocess communication to communicate with sibling processes. 4. New threads are easily created; new processes require duplication of the parent process. 5. Threads can exercise considerable control over threads of the same process; processes can only exercise control over child processes. 6. Changes to the main thread (cancellation, priority change, etc.) may affect the behavior of the other threads of the process; changes to the parent process does not affect child processes. 总结上述区别,无非两个关键点,这也是我们在特定的场景下需要使用多线程的原因: 1. 同一个进程内的多个线程共享该进程内的地址资源 2. 创建线程的开销要远小于创建进程的开销(创建一个进程,就是创建一个车间,涉及到申请空间,而且在该空间内建至少一条流水线,但创建线程,就只是在一个车间内造一条流水线,无需申请空间,所以创建开销小) ## 三 多线程应用举例 开启一个字处理软件进程,该进程肯定需要办不止一件事情,比如监听键盘输入,处理文字,定时自动将文字保存到硬盘,这三个任务操作的都是同一块数据,因而不能用多进程。只能在一个进程里并发地开启三个线程,如果是单线程,那就只能是,键盘输入时,不能处理文字和自动保存,自动保存时又不能输入和处理文字。 
并发编程多进程之生产者消费者模型
并发编程多线程之开启线程的两种方式