python_线程池

一、线程池简易版

思路先创建一个队列,因为队列先进先出,使用后就消失了,队列里面储存最大线程数,方法一个是调取线程,一个是储存线程

import queue
import threading
import time
class  ThreadPool(object):
    #初始化类,所以创建线程初始化线程
    def __init__(self,maxsize):
        self.queue = queue.Queue()
        for i in range(maxsize):
            self.queue.put(threading.Thread)
    #使用队列中 的get方法
    def get_thread(self):
        return  self.queue.get()
  #使用队列中put方法
    def add_thread(self):
        self.queue.put(threading.Thread)

#实验的方法
def f(i,ret):
    time.sleep(0.2)
    print(i,threading.current_thread())
  #每次启动线程就往对了列中加等同的线程(最后剩余数等于最大线程数)
    ret.add_thread()

#创建线程池对象
ret = ThreadPool(5)
for i in range(10):
    #取出线程池中的线程(threading.Thread)相等于t =threading.Thread
    p = ret.get_thread()
    #调用线程池对象,加线程
    t=p(target = f,args = (i,ret,))
    t.start()

time.sleep(0.5)
print(ret.queue.qsize())
》》
3 <Thread(Thread-4, started 6264)>
4 <Thread(Thread-5, started 332)>
1 <Thread(Thread-2, started 7396)>
0 <Thread(Thread-1, started 2472)>
2 <Thread(Thread-3, started 8592)>
9 <Thread(Thread-10, started 6584)>
7 <Thread(Thread-8, started 5952)>
8 <Thread(Thread-9, started 1844)>
6 <Thread(Thread-7, started 8940)>
5 <Thread(Thread-6, started 2476)>
5

根据上面的代码发现,最后队列中的数量等于最大线程数也就是当线程都结束了,队列中实际还是保留着五个线程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近一个项目上使用线程池,设定处理项1W,10线程,但是需要检测线程进行状态。出现错误N次,就自动终止线程。实现如...
    迷途老鹰阅读 983评论 0 5
  • 为了在项目中管理优化线程数量,线程池是必不可少的。Python的在multiprocess中有进程池作为进程管理,...
    slords阅读 467评论 0 1
  • mutilprocessing.dummy multiprocessing.dummy 模块与 multiproc...
    FangHao阅读 1,627评论 0 2
  • 前言 线程池是Java中的一个重要概念,从Android上来说,当我们跟服务端进行数据交互的时候我们都知道主线程不...
    老实任阅读 1,275评论 1 9
  • 樛木南有樛(jiu)木,葛藟(lei)累之。乐只君子,福履绥之。南有樛木,葛藟荒之。乐只君子,福履将之。南有樛木,...
    拾壹少阅读 1,589评论 15 19