多线程、多进程、多协程区别

1、并发和并行

并发是指在一个时间段内发生若干事件的情况;
并行是指在同一时刻发生若干事件的情况。

在使用单核CPU时,多个工作任务时以并发的方式运行的;在使用多核CPU时,在各个核的任务能够同时运行,是并行

2、同步和异步

同步是并发或并行的各个任务不是独自完成,任务之间有一定的交替顺序,可能要在一个任务运行完得到结果后,才能开始运行另一个任务。
异步是并发或并行的各个任务可以独自完成,一个任务的运行不会受到另一个任务的影响。
同步IO(Input/Output)指每单击一个网页,要等这个网页彻底显示出来后才能单击另一个网页;异步IO指单击完一个网页后,不需要等对方服务器返回结果,就可以用新打开的浏览器窗口打开另一个网页。

3、多线程

进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程。
一个线程只可以属于一个进程,但一个进程能包含多个线程
多线程爬虫以并发的方式异步执行,即多个线程并不是真正的同时执行任务,而是通过进程的快速切换加快网络的爬虫速度。python的多线程爬虫只能运行在单核上。
在这里插入图片描述

在python中,一个线程的执行过程需要获取GIL(全局解释器锁)、执行代码直到挂起和释放GIL。因此python中一个进程只能同时执行一个线程,这也是在多核CPU上python的多线程效率不高的原因。
使用多线程的两种方法:
(1)函数式:调用thread模块中的start_new_thread()函数产生新线程;
(2)类包装式:调用Threading库创建线程,从threading.Thread继承。

4、多进程

多进程爬虫利用CPU的多核,进程数取决于计算机CPU的处理器个数。各个进程并行运行在不同的核上。
在这里插入图片描述

python进行多进程要使用multiprocessing库,使用该库有两种方法:
(1)Process + Queue
(2) Pool + Queue

5、多协程

协程是一种用户态的轻量级线程,在程序级别来模拟系统级别用的进程。在一个基础进程中,一个线程通过程序的模拟方法实现高并发。多协程可理解为一个人其实同时只能做一件事,但是可以把几个任务拆成几部分来交叉执行。在python中可以使用gevent库实现多协程。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值