Python课程设计 第 39 / 52 篇
线程并发
Chapter23
任务名称 - 线程并发
任务简介
- 理解线程的理论
- 掌握两种方式开启多线程
- 掌握线程对象常用的方法
- 深入理解守护进程与守护线程的差异
- 掌握线程互斥锁的用法
- 理解死锁成因,了解递归锁用法
- 掌握信号量的用法
- 了解GIL,理解何为并发编程,掌握何时使用Python多线程或多进程
- 掌握进程池和线程池的用法
- 深入理解同步,异步,阻塞与非阻塞
- 掌握线程queue的三种用法
- 掌握线程Event的用法
社群话题
Python应该怎么做并发编程
详细说明
线程是计算机最小的执行单位
打卡要求
- 写代码验证在多核CPU前提下对于IO密集型和计算密集型任务多进程和多线程的执行效率,要求如下:
1 执行效率使用time模块来完成
2 计算密集型可以用累加或者阶乘,在机器硬件允许的情况下,体现出时间的数量级
3 IO密集型可以用time来模拟,体现出时间的数量级
4 计算密集型分别用多进程和多线程实现
5 IO密集型也分别用多进程和多线程实现
- 写一个简易的爬虫程序,抓取博客园网站首页前10页中所有文章标题带有Python关键字(不区分大小写)的文章,并把文章链接和文章标题存入硬盘,要求如下:
1 使用正则表达式匹配出需要的数据,然后对数据进行解析
2 程序中很明显有多个任务,这多个任务必须是异步调用
3 任务的返回值要及时处理,不能等所有任务都执行完再统一处理
4 提示信息:可以使用生产者消费者模型来处理
5 尽可能提升程序的执行效率
爬虫储备知识:
requests模块是一个非常强大的爬虫模块,它的基本使用非常简单,但是它是所有爬虫程序的根源,我们只需要使用requests模块里面级简单的功能就能完成,用法可以通过查询得知。
3. 使用线程Event写一个监测服务端机器服务状态的程序,要求如下:
1 模拟服务端机器5秒延迟,客户端每次等待时间为1秒
2 当用户等待三次还不能开始连接,就返回给用户一个提示信息
作业打卡截至时间:9.29日