进程池 & 线程池

 

https://www.cnblogs.com/lddragon/p/11358948.html       # 抄的

进程池与线程池

什么是池/span>

  在保证计算机硬件安全的情况下最大限度的利用计算机  

     池其实是降低了程序的运行效率,但是保证了计算机硬件的安全  
     (硬件的发展跟不上软件的速度)

 

进程池与线程池

  开进程开线程都需要消耗资源,只不过两者比较的情况 线程消耗的资源比较少
  在计算机能够承受范围之内最大限度的利用计算机

 

如何创建线程池 / 进程池/h3>

  模块导入 from concurrent.futures import ThreadPoolExecutor / ProcessPoolExecutor

  生成一个线程池 / 进程池 对象

     T = ThreadPoolExecutor() 括 内可以传参数指定线程池内的线程个数也可以不传;

    不传默认是当前所在计算机的cpu个数乘5

     P = ProcessPoolExecutor()  默认是当前计算机cpu的个数

  ps:池子中创建的进程 / 线程创建一次就不会再创建了,至始至终用的都是最初的那几个

      这样的话节省了反复开辟进程/线程的资源

 

  进程需要在 main 下提交任务,线程建议也这样

  创建的函数其实就是你的进程 / 线程执行的任务

   使用 submit() 方法来提交任务          *** submit 是异步提交  

        第一个参数 执行的任务(函数)

           第二个参数:任务(函数)的参数     

                 用逗 隔开

 

    同步: 提交任务之后 原地等待任务的返回结果 期间不做任何事

    异步: 提交任务之后 不原地等待返回结果 直接执行下一行代码 结果是要的 通过其他方式来拿

 

 

  submit 提交任务之后,任务完成会有一个返回值,是一个对象 

  使用 result 可以查看对象的结果,但是不能直接在 submit 后直接使用 result;

  因为任务提交之后是不会直接有返回结果的,而 result 就相当于等待这个结果;此时异步就会变成串行了

复制代码

线程池和进程池的操作几乎一样,唯一一点区别:

  进程的回调函数是:主线程执行的   

  线程的回调函数是:谁腾出手来谁来干

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月16日
下一篇 2019年7月16日

相关推荐