zoukankan      html  css  js  c++  java
  • day 34 GIL锁,线程队列,线程池及线程池回调函数

    一 . GIL锁

      GIL锁是python代码转解释器代码的一个锁

      

       虽然我们加锁的原因是因为要保护安全性从而降低了效率,但是加锁也会出现安全性的问题!

      

      

    二 . 线程队列

      import queue

      三种队列形式

      1 . class queue.(maxsize = 0)    # 先进先出

      2 . class queue.LifoQueue(maxsize = 0)  #先进后出,后进先出

      3 . class queue.PriotityQueue(maxsize = 0)   #优先级队列,参数是:元祖(1,‘ 2 ’)  1是优先级,  ‘ 2 ’是数据

      这三种队列都是线程安全的,不会出现多个线程抢占同一个资源或数据的情况。

    三 . 线程池基本方法及回调函数

      ProcessPoolExecutor  :线程池的导入模块,提供异步调用

      回顾下进程池:ThreadPoolExecutor    进程池的导入模块,提供异步调用

      from  concurrent.futures  import  ThreadPoolExecutor,ProcePoolExecutor

      from   multiprocessing   import   pool    (模块导入有点长,需要记一下)

      线程池的基本方法:

      1 . submit(fn,*args,**kwargs)   #   异步提交任务

      2 . map(func,*iterables,timeout=None,chunksize = 1)    #  映射,取代for 循环submit 的操作

      3 . shutdown    #(wait = True)  相当于进程吃的pool.close( )+pool.join( ) 操作

      4 . result(timeout = None)    # 取得结果

      5 . add_done_callback(fn)    #  回调函数

       

       

  • 相关阅读:
    开放API接口及其安全性
    suoyin
    正常关闭tomcat
    学生选课系统
    chrome浏览器Network面板请求Timing分析
    页面请求速度慢,TTFB时间长的问题分析
    javascript正则表达式
    Yahoo!团队经验:网站性能优化的34条黄金法则
    angular.js中提供的基础方法
    前端构建之--gulp
  • 原文地址:https://www.cnblogs.com/liuteacher/p/10058685.html
Copyright © 2011-2022 走看看