python 多进程数量 对爬虫程序的影响

1. 首先看一下 python 多进程的优势和缺点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个关键词,去爬取微博的搜索接口,经过开不一样的进程数据,评估爬虫耗时状况。spa

五: 测试过程:操作系统

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

    程序耗时:设计

          

 

 

 

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

    程序耗时: 

        

 

 

   

 

                                

 

 

 

         

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

    程序耗时:

          

 

 

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

     程序耗时:

        

 

 

        

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

    程序耗时:

                                   

 

 

 

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

    程序耗时:

        

 

 

 

 

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

    程序耗时:

        

 

 

六.  数据统计分析:

    

 

     

 

 

 

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

相关文章
相关标签/搜索