day 34 GIL锁,线程队列,线程池及线程池回调函数

一 . GIL锁

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

  

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

  

  

二 . 线程队列

  import queue

  三种队列形式

扫描二维码关注公众号,回复: 4346100 查看本文章

  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)    #  回调函数

   

   

猜你喜欢

转载自www.cnblogs.com/liuteacher/p/10058685.html