首页 > 代码库 > Python 线程池
Python 线程池
python默认没有提供线程池的功能,所以要想使用线程池,就必要使用第三方的模块或者自定义线程
线程并不是越多越好,线程的上下文切换会影响到服务器的性能
线程池:一个容器,有最大数,取一个少一个,无线程时等待,线程执行完毕,交还线程
__author__ = ‘alex‘#coding:utf-8import queueimport threadingimport timeclass ThreadPool: def __init__(self,maxsize=5): self.maxsize = maxsize self._q = queue.Queue() for i in range(5): self._q.put(threading.Thread) def get_thread(self): return self._q.get() def add_thread(self): self._q.put(threading.Thread)pool = ThreadPool(5)def task(args,p): print (args ) time.sleep(2) p.add_thread()for i in range(100): t = pool.get_thread() obj = t(target=task,args =(i,pool)) obj.start()
这个简单的程序实现了线程池的基本功能,每次只能有5个线程产生,但是也有很大的局限性,1,线程不能回收回来,每次产生了5个线程,但是线程确不能收回来(垃圾回收机制回收回来),每5个线程结束以后,只是重新生成了新的线程;2,如果需要的线程数range(100)小于我们定义的创建池的数值(5),那就浪费了,根本没有必要初始就创立5个线程(线程池一下子就开到了最大)。
Python 线程池
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。