数据挖掘_并行并发介绍和同步异步介绍
Posted susmote
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘_并行并发介绍和同步异步介绍相关的知识,希望对你有一定的参考价值。
前面跟大家讲的request s和spynner都是单进程(单线程)的顺序抓取,而并发和并行执行的异步抓取会极大地提高抓取效率。
并行和并发
并发和并行使两个相似的概念,并发是指在一个时间段内发生若干事件的情况,并行是指在同一时刻发生若干事件的情况。
我们可以以CPU的工作方式来说明这两个概念
单核CPU下,多任务操作系统的各任务是以并发的方式运行的,因为只有一个处理器,所以各任务会以分时的方式在一段事件内分别占用CPU依次执行,如果在自己分得的时间段内没有完成,那么就需要等到下一次得到CPU的使用权时才会继续执行,直到整个任务完成,因为CPU的切换速度很快,所以给我们的感觉就是同时在运行多个任务
多核CPU下,因为有两个以上(包含两个)可以同时工作的内核,所以就有可能在各个核上运行的任务能同时进行,这就叫做并行
通过这张图你应该能更好的理解(串行不在我们考虑的范围内)
同步和异步
同步和异步的概念,一般会涉及到多个任务或事件的参与。可以在并发或并行的背景下去理解这两个概念
同步指的是并发或并行发生的各任务之间不是孤立独自运行的,一个任务的进行可能需要在获得另一个任务的给出的结果之后
或者说是只有一个任务完成或给出一个结果之后,另一个任务在获得这个结果后才能继续运行
总之,各任务的运行会彼此相互制约,节奏和步调要协调好,否则就会出现错误
异步指的是并发或并行发生的各任务之间彼此是独立运行的,不受各自的影响,这是异步与同步最主要的区别
实际工作中如何进行选择
当需要多个任务互相配合在并发或并行环境中合作完成时,就需要以同步的方式运行
操作系统是以信号量机制来实现同步的,各类编程语言也在进行并行或并发程序设计时提供了同步机制
例如Python在多线程设计时的锁机制
当我们需要将一个大的任务分解成若干个小的子任务时,各子任务可以分别独自完成,彼此之间不需要互相协作,这是就可以考虑使它们异步地并行或异步地并发执行
这在数据抓取时始终很常见的模式,将若干要抓取的链接分为几组,然后对每组分别使用子任务进行抓取,待各子任务抓取结束后,再将结果进行汇总,完成整个任务
关于这些概念大概就是这些,如果不是太明白,可以自己查阅资料弄明白
以上是关于数据挖掘_并行并发介绍和同步异步介绍的主要内容,如果未能解决你的问题,请参考以下文章