zoukankan      html  css  js  c++  java
  • python 多进程数量 对爬虫程序的影响

    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一下,对程序的提速还是很明显,因为多进程耗内存,所以注意内存的优化。

        

  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/11511368.html
Copyright © 2011-2022 走看看