大数据采集 多进程抓取详解
沉沙 2018-09-29 来源 : 阅读 1465 评论 0

摘要:本篇教程介绍了大数据采集 多进程抓取详解,希望阅读本篇文章以后大家有所收获,帮助大家对大数据云计算大数据采集的理解更加深入。

本篇教程介绍了大数据采集 多进程抓取详解,希望阅读本篇文章以后大家有所收获,帮助大家对大数据云计算大数据采集的理解更加深入。

<

多进程依赖于所在机器的处理器个数,在多核机器上进行多进程编程时,各核上运行的进程之间是并行执行的,可以利用进程池,是每一个内核上运行一个进程,当翅中的进程数量大于内核总数时,待运行的进程会等待,直至其他进程运行完毕让出内核

多进程就相当于下面这种卖票的行为

 

 

在这里要注意,当系统内只有一个单核CPU是,多进程并不会发生,此时各进程会依次占用CPU运行至完成

 

我们可以通过Python的语句会的CPU可用的核数,如下图



 

 

为了形成比较,我们还是使用之前的那个例子,当当图书,搜索关键字商品信息的抓取

首先写出多进程主方法

# coding=utf-8
__Author__ = "susmote"

from multi_threading import mining_func
import multiprocessing
import time


def multiple_process_test():
    start_time = time.time()
    page_range_list = [
        (1, 10),
        (11, 20),
        (21, 32),
    ]
    pool = multiprocessing.Pool(processes=3)
    for page_range in page_range_list:
        pool.apply_async(mining_func.get_urls_in_pages, (page_range[0], page_range[1]))

    pool.close()
    pool.join()
    end_time = time.time()
    print("抓取时间:", end_time - start_time)
    return end_time - start_time

  在这里面,我简单解释一下有关多进程的操作

pool被定义为可同时并行3个进程的进程池,然后通过循环,使用apply_async方法使进入进程池的进程以异步的方式并行运行

下面是主函数

# coding=utf-8
__Author__ = "susmote"

from process_func import multiple_process_test


if __name__ == "__main__":
    pt = multiple_process_test()
    print("pt : ", pt)

  

把代码运行起来,得到如下结果



 5.908

 

再运行一次



3.954

 

最后一次



4.163

 

取平均时间



4.341秒

 

这时我们再回顾上篇文章多线程的情况(同样网络条件下):

多线程



 

单线程



 

可以看到,差距非常明显,多进程占绝大优势

 

多进程就是这些,你也可以找一个更大的数据池,去试验这些方法    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据采集频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程