Python课程设计 第 39 / 52 篇

线程并发

Chapter23

任务名称 - 线程并发

任务简介

  1. 理解线程的理论
  2. 掌握两种方式开启多线程
  3. 掌握线程对象常用的方法
  4. 深入理解守护进程与守护线程的差异
  5. 掌握线程互斥锁的用法
  6. 理解死锁成因,了解递归锁用法
  7. 掌握信号量的用法
  8. 了解GIL,理解何为并发编程,掌握何时使用Python多线程或多进程
  9. 掌握进程池和线程池的用法
  10. 深入理解同步,异步,阻塞与非阻塞
  11. 掌握线程queue的三种用法
  12. 掌握线程Event的用法

社群话题

Python应该怎么做并发编程

详细说明

线程是计算机最小的执行单位

打卡要求

  1. 写代码验证在多核CPU前提下对于IO密集型和计算密集型任务多进程和多线程的执行效率,要求如下:
1 执行效率使用time模块来完成
2 计算密集型可以用累加或者阶乘,在机器硬件允许的情况下,体现出时间的数量级
3 IO密集型可以用time来模拟,体现出时间的数量级
4 计算密集型分别用多进程和多线程实现
5 IO密集型也分别用多进程和多线程实现
  1. 写一个简易的爬虫程序,抓取博客园网站首页前10页中所有文章标题带有Python关键字(不区分大小写)的文章,并把文章链接和文章标题存入硬盘,要求如下:
1 使用正则表达式匹配出需要的数据,然后对数据进行解析
2 程序中很明显有多个任务,这多个任务必须是异步调用
3 任务的返回值要及时处理,不能等所有任务都执行完再统一处理
4 提示信息:可以使用生产者消费者模型来处理
5 尽可能提升程序的执行效率

爬虫储备知识:

requests模块是一个非常强大的爬虫模块,它的基本使用非常简单,但是它是所有爬虫程序的根源,我们只需要使用requests模块里面级简单的功能就能完成,用法可以通过查询得知。

3. 使用线程Event写一个监测服务端机器服务状态的程序,要求如下:

1 模拟服务端机器5秒延迟,客户端每次等待时间为1秒
2 当用户等待三次还不能开始连接,就返回给用户一个提示信息

作业打卡截至时间:9.29日