数据挖掘_并行并发介绍和同步异步介绍

 

前面跟大家讲的request s和spynner都是单进程(单线程)的顺序抓取,而并发和并行执行的异步抓取会极大地提高抓取效率。

 

并行和并发

并发和并行使两个相似的概念,并发是指在一个时间段内发生若干事件的情况,并行是指在同一时刻发生若干事件的情况。

我们可以以CPU的工作方式来说明这两个概念

 

单核CPU下,多任务操作系统的各任务是以并发的方式运行的,因为只有一个处理器,所以各任务会以分时的方式在一段事件内分别占用CPU依次执行,如果在自己分得的时间段内没有完成,那么就需要等到下一次得到CPU的使用权时才会继续执行,直到整个任务完成,因为CPU的切换速度很快,所以给我们的感觉就是同时在运行多个任务

 

多核CPU下,因为有两个以上(包含两个)可以同时工作的内核,所以就有可能在各个核上运行的任务能同时进行,这就叫做并行

 

通过这张图你应该能更好的理解(串行不在我们考虑的范围内)

 

 

同步和异步

同步和异步的概念,一般会涉及到多个任务或事件的参与。可以在并发或并行的背景下去理解这两个概念

 

同步指的是并发或并行发生的各任务之间不是孤立独自运行的,一个任务的进行可能需要在获得另一个任务的给出的结果之后

或者说是只有一个任务完成或给出一个结果之后,另一个任务在获得这个结果后才能继续运行

总之,各任务的运行会彼此相互制约,节奏和步调要协调好,否则就会出现错误

 

异步指的是并发或并行发生的各任务之间彼此是独立运行的,不受各自的影响,这是异步与同步最主要的区别

 

 

实际工作中如何进行选择

当需要多个任务互相配合在并发或并行环境中合作完成时,就需要以同步的方式运行

操作系统是以信号量机制来实现同步的,各类编程语言也在进行并行或并发程序设计时提供了同步机制

例如Python在多线程设计时的锁机制

 

 

当我们需要将一个大的任务分解成若干个小的子任务时,各子任务可以分别独自完成,彼此之间不需要互相协作,这是就可以考虑使它们异步地并行或异步地并发执行

这在数据抓取时始终很常见的模式,将若干要抓取的链接分为几组,然后对每组分别使用子任务进行抓取,待各子任务抓取结束后,再将结果进行汇总,完成整个任务

 

关于这些概念大概就是这些,如果不是太明白,可以自己查阅资料弄明白

 

posted @ 2018-04-28 14:40  Loyio  阅读(376)  评论(0编辑  收藏  举报

Copyright ©2018 susmote 版权所有

官方博客 www.susmote.com