Python多线程&进程

1、线程&进程python

对于操做系统来讲,一个任务就是一个进程(Process),好比打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。进程是不少资源的集合。浏览器

 

有些进程还不止同时干一件事,好比Word,它能够同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就须要同时运行多个“子任务”,咱们把进程内的这些“子任务”称为线程(Thread)。多线程

因为每一个进程至少要干一件事,因此,一个进程至少有一个线程。固然,像Word这种复杂的进程能够有多个线程,多个线程能够同时执行,多线程的执行方式和多进程是同样的,也是由操做系统在多个线程之间快速切换,让每一个线程都短暂地交替运行,看起来就像同时执行同样。固然,真正地同时执行多线程须要多核CPU才可能实现。线程是最小的执行单元,而进程由至少一个线程组成。spa

咱们在作事情的时候,一我的作是比较慢的,若是多我的一块儿来作的话,就比较快了,程序也是同样的,咱们想运行的速度快一点的话,就得使用多进程,或者多线程,在python里面,多线程被不少人诟病,为何呢,由于Python的解释器使用了GIL的一个叫全局解释器锁,它不能利用多核CPU,只能运行在一个cpu上面,可是你在运行程序的时候,看起来好像仍是在一块儿运行的,是由于操做系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每一个任务都是交替执行的,可是,因为CPU的执行速度实在是太快了,咱们感受就像全部任务都在同时执行同样。这个叫作上下文切换。操作系统

2、多线程,python中的多线程使用theading模块线程

下面是一个简单多线程blog

下面是另外一种启动多线程的方式,继承式继承

这两种方式没有什么区别,两种写法而已,我我的喜欢用第一种,更简单一些。进程

线程等待,多线程在运行的时候,每一个线程都是独立运行的,不受其余的线程干扰,若是想在哪一个线程运行完以后,再作其余操做的话,就得等待它完成,那怎么等待呢,使用join,等待线程结束ip

守护线程,什么是守护线程呢,就至关于你是一个国王(非守护线程),而后你有不少仆人(守护线程),这些仆人都是为你服务的,一但你死了,那么你的仆人都给你陪葬。

线程锁,线程锁就是,不少线程一块儿在操做一个数据的时候,可能会有问题,就要把这个数据加个锁,同一时间只能有一个线程操做这个数据。

下面来个简单的爬虫,看下多线程的效果:

3、多进程,上面说了Python里面的多线程,是不能利用多核CPU的,若是想利用多核CPU的话,就得使用多进程,python中多进程使用multiprocessing模块。

相关文章
相关标签/搜索