什么是多任务?
什么叫"多任务"呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时v有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。
在了解多任务具体实现方式之前,我们先来了解并发和并行的概念:
并发:
在一段时间内交替去执行多个任务。
对于单核cpu处理多任务,操作系统轮流让各个任务交替执行,假如:软件1执行0.01秒,切换到软件2,软件2执行0.01秒,再切换到软件3,执行0.01秒…这样反复执行下去,实际上每个软件都是交替执行的.但是,由于CPU的执行速度实在是太快了,表面上我们感觉就像这些软件都在同时执行一样.这里需要注意单核cpu是并发的执行多任务的。
并行:
在一段时间内真正的同时一起执行多个任务。
对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内核是真正的一起同时执行多个任务。这里需要注意多核cpu是并行的执行多任务,始终有多个任务一起执行。
其实并发和并行就是多任务具体的实现方式:多线程和多进程
并发可以理解为一件事情由多个人同时去做,相当于我雇佣了很多个工具人帮我抢着做事。
对应的在程序中我们可以这么理解:当程序发生阻塞导致程序挂起时,我们可以让程序执行程序后面的任务。需要注意的是程序在同一时间只会执行了个任务。这是多线程的实现原理。
并行可以理解为多个人同时做多件事情。相当于多个人在同一时间做不同的事情,每个人做事都是一个独立的个体。这是多进程的实现原理。
要点
使用多任务能充分利用CPU资源,提高程序的执行效率,让你的程序具备处理多个任务的能力。
多任务执行方式有两种方式:
- 并发:在一段时间内交替去执行多个任务。
- 并行:在一段时间内真正的同时一起执行多个任务
我们今天学习多线程并发编程,并运用到爬虫项目中
单线程程序
线程是一个单独的执行流程。这意味着您的程序将同时发生两件事。不同的线程实际上并不是同时执行的:它们只是看起来像同时执行。
现在您已经了解了线程是什么,让我们学习如何创建一个线程。Python标准库提供threading。Thread在这个模块中,很好地封装了线程,提供了一个干净的界面来使用它们。
要启动一个单独的线程,您需要创建一个Thread 实例,然后告诉它.start()。
接下来我们看看泡茶页的这个例子:
import time
print( '1.洗壶:1min ' )
time.sleep(1)
print( ' 2.灌凉水: 1min ' )
time.sleep(1)
print( '3.烧水: 1min ' )
time.sleep(1)
print('4.等水烧开:3min')
time.sleep(1)
time.sleep(1)
time.sleep(1)
print('5.洗茶杯:1min ' )
time.sleep(1)
print( '6.放茶叶: 1min ' )
time.sleep(1)
print( '7.泡茶: 1min ' )
time.sleep(1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
很显然,上述的案例是一个单线程,同时只能做一件事情,那么我们来想一想,可不可以利用程序阻塞没有事情做的时候,我们强迫程序做下面还没有做的事情