1. 首先看一下 python 多进程的优点和缺点

  

多进程优点:
1.稳定性好: 多进程的优点是稳定性好,一个子进程崩溃了,不会影响主进程以及其余进程。基于这个特性,常常会用多进程来实现守护服务器的功能。
然而多线程不足之处在于,任何一个线程崩溃都可能造成整个进程的崩溃,因为它们共享了进程的内存资源池。
2.能充分利用多核cpu: 由于python设计之初,没预料到多核cpu能够得到现在的发展,只考虑到了单核cpu。为了更好的实现多线程之间数据完整性与状态同步,
于是设计出了一个全局解析器锁(GIL, global interpreter lock)。
     GIL确保Python进程一次运行一个线程(其它线程处于等待I/O或者睡眠状态),无论当前cpu有多少核心。这就意味着Python虽然可以实现多线程,
但是在任意时间点仅有一个核心在执行Python指令(即线程无法并行运算),无法发挥现代多核cpu的性能。而多进程可以利用多核cpu。 多进程缺点:
1. 创建进程的代价非常大: 因为操作系统要给每个进程分配固定的资源,并且操作系统对进程的总数会有一定的限制,若进程过多,操作系统调度都会存在问题,会造成假死状态。
2. 进程间通信成本高: 每个进程都有自己独立的内存空间,不同进程之间的内存空间不共享。进程之间的通信有操作系统传递,导致通讯效率低,切换开销大。
通信主要通过信号传递的方式来实现(实现方式有多种,信号量、管道、事件等,通讯都需要过内核,效率低)
3. 切换开销大: 上下文切换的时候需要保存栈、cpu寄存器、虚拟内存、以及打开的相关句柄等信息,开销大。
     4. 耗内存: python 使用multiprocessing来创建多进程时,无论数据是否不会被更改,子进程都会复制父进程的状态(内存空间数据等)。
            如果主进程耗的资源较多时,不小心就会造成不必要的大量的内存复制,从而可能导致内存爆满的情况。

二: 测试服务器情况:

   cpu是12核心,内存是128G

    

三:测试目的:

  测试目的是因为多进程 切换开销大,创建进程的代价大,通过开不同的进程数量,测试是否会出现进程开的越多,爬虫的速度越慢的情况。

四:测试软件条件:

  1. 用10000个关键词,去爬取微博的搜索接口,通过开不同的进程数据,评估爬虫耗时情况。

五: 测试过程:

  2 .开32个多进程爬虫耗时情况:

    程序耗时:

          

  3 .开64个多进程爬虫耗时情况:

    程序耗时:

        

   

         

  4 .开128个多进程爬虫耗时情况:

    程序耗时:

          

  5 .开256个多进程爬虫耗时情况:

    程序耗时:

        

        

  6 .开512个多进程爬虫耗时情况:

    程序耗时:

  7 .开768个多进程爬虫耗时情况:

    程序耗时:

        

8 .开1024个多进程爬虫耗时情况:

    程序耗时:

        

六.  数据统计分析:

    

    

七.  结论:多进程数据量在512一下,对程序的提速还是很明显,因为多进程耗内存,所以注意内存的优化。

    

python 多进程数量 对爬虫程序的影响的更多相关文章

  1. 用了python多进程,我跑程序花费的时间缩短了4倍

    应用场景:本人需要对200万条网页html格式数据进行清洗,提取文字后将分词结果写入数据库,之前做了一次,大概花费了80多个小时才跑完.机器配置是4核,内存8G:开完会领导让再改点东西重新跑一遍,然后 ...

  2. 使用Python制作第一个爬虫程序

    用到的开发环境 IDE:pycharm python  version :2.7 掌握的知识:  Pycharm  还能更改Python的版本 代码如下:(重点就是   正则表达式的学习) # !/u ...

  3. python爬虫__第一个爬虫程序

    前言 机缘巧合,最近在学习机器学习实战, 本来要用python来做实验和开发环境 得到一个需求,要爬取大众点评中的一些商户信息, 于是开启了我的第一个爬虫的编写,里面有好多心酸,主要是第一次. 我的文 ...

  4. python爬虫程序

    http://blog.csdn.net/pleasecallmewhy/article/details/8922826 此人的博客关于python爬虫程序分析得很好!

  5. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息

    每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...

  6. 第一个python爬虫程序

    1.安装Python环境 官网https://www.python.org/下载与操作系统匹配的安装程序,安装并配置环境变量 2.IntelliJ Idea安装Python插件 我用的idea,在工具 ...

  7. 一个简单的python爬虫程序

    python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...

  8. 我的第一个爬虫程序:利用Python抓取网页上的信息

    题外话 我第一次听说Python是在大二的时候,那个时候C语言都没有学好,于是就没有心思学其他的编程语言.现在,我的毕业设计要用到爬虫技术,在网上搜索了一下,Python语言在爬虫技术这方面获得一致好 ...

  9. Python 多进程爬虫实例

    Python  多进程爬虫实例 import json import re import time from multiprocessing import Pool import requests f ...

随机推荐

  1. BERT、ERNIE以及XLNet学习记录

    主要是对 BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingtichu提出的BERT 清华 ...

  2. 题解 P2668 【斗地主】

    dfs+简易剪枝+简易a* 思路: dfs+简易剪枝+简易a(我也不知道算不算a): dfs参数记录层数 按消耗牌多少的贪心顺序搜索 有几种情况可以不用搜索(但我还是搜索了) 可以用a*估算出来 最后 ...

  3. Linux性能优化实战学习笔记:第五十六讲

    一.上节回顾 上一节,我带你一起梳理了,性能问题分析的一般步骤.先带你简单回顾一下. 我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源. 从系统资源瓶颈的角度来说,USE 法是最为 ...

  4. 前端工程化 - 剖析npm的包管理机制

    转自https://juejin.im/post/5df789066fb9a0161f30580c 现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的 ...

  5. EPPlus.Core 处理 Excel 报错之天坑 WPS

    最近工作中常常有有数据处理的需求,一个Excel动不动就是上十万的数据量,在用 EPPlus.Core 导入数据入库的时候遇到了一个莫名其妙的问题 The given key 'rId2' was n ...

  6. 'try(A a = new A())' VS 'try finally'

    实现了AutoCloseable接口的类,可以在try的时候直接实例化对象.try代码块完成之后,自动调用close方法,相当于在finally里主动调用.但是出现异常后的流程和try finally ...

  7. 在 C++ 中使用 QML 对象

    看过了如何在 QML 中使用 C++ 类型或对象,现在来看如何在 C++ 中使用 QML 对象. 我们可以使用 QML 对象的信号.槽,访问它们的属性,都没有问题,因为很多 QML 对象对应的类型,原 ...

  8. HTTP之网关的分类

    网关的分类 ========================摘自<HTTP权威指南>============================= 1.  HTTP/*:服务器端Web网关 请 ...

  9. 【linux】CentOS 查看系统时间,修改时区

    ===============CentOS 7.6================ 1.查看系统时间 date 查看当前系统时间以及时区结果是: Mon Jul 8 09:23:31 UTC 2019 ...

  10. windows 2012 IIS 部署 .net core HTTP Error 502.5 - Process Failure 错误解决办法

    安装系统补丁: 2012 R2对应>Windows8.1-KB2999226-x64.msu 下载地址: https://www.microsoft.com/zh-CN/download/det ...