注:Python中threading模块不像multiprocess模块有进程池,是没有线程池的,所以我们可以自己写一个线程池,此线程池的实现方式参照于twisted中的线程池实现方式。
实现线程池要解决的问题:
1.线程池中初始化的线程数量------>取线程池最大线程数量和任务数中的最小值
2.线程状态---->在某一个时刻一共有多少线程,有几个在运行,有几个在等待
3.关闭线程
第一步:超简单的线程池
#!/usr/bin/env python #-*- coding:utf-8 -*- import threading import Queue import time class ThreadPool(object): def __init__(self,max_num=20): self.q = Queue.Queue(max_num) for i in xrange(max_num): self.q.put(threading.Thread) // 这里往队列中加入的是类,不是对象 #从线程池中取一个线程 def get_thread(self): return self.q.get() #向线程池中添加一个线程 def put_thread(self): self.q.put(threading.Thread) Pool = ThreadPool(5) def run(n,pool): print n time.sleep(2) pool.put_thread() for i in xrange(10): thread = Pool.get_thread() t = thread(target = run,args=(i,Pool)) t.start()
时间: 2024-10-17 00:43:05