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

        

  • 相关阅读:
    ZZ: kvm qemu kqemu qemu-kvm libvirt
    ZZ:爬虫
    Mac下安装及配置Appium环境
    badboy使用手册
    如何正确做 Web端压力测试?
    关于web页面性能测量指标与建议
    Pycharm的使用一
    如何下载安装Python
    apache jmeter下载与安装
    但行其事,不问前程
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/11511368.html
Copyright © 2011-2022 走看看