线程池的要点分析

1、考虑建立线程数量

2、线程池的状态

    with open(‘flog‘) as f:        f.write()

3、关闭线程

实例(简单实例)

原理:

1:创建10个线程对象2:queue队列拿取线程。可用:拿;否则:等待3:线程执行完毕,归还给线程池
#!/usr/bin/env python
# coding:utf-8
import  Queue
import threading
"""
1:创建10个线程对象
2:queue队列拿取线程。可用:拿;否则:等待
3:线程执行完毕,归还给线程池
"""
class ThreadPool(object):
    # 设置一个默认参数max_num
    def __init__(self,max_num=20):
        # 创建队列
        self.queue = Queue.Queue(max_num)
        # 循环创建1个对象
        for i in xrange(max_num):
            self.queue.put(threading.Thread)

    def get_thread(self):
        return self.queue.get()
    # 使用类
    def add_thread(self):
        self.queue.put(threading.Thread)

# 创建对象
# 创建1最多能接收10个线程的队列
pool = ThreadPool(10)

def func(arg,p):
    print arg
    import time
    time.sleep(2)
    p.add_thread()
# 300个任务要执行
for i in xrange(300):
    # 获取一个线程,
    thread = pool.get_thread()
    # 执行这个线程
    t = thread(target=func,args=(i,pool))
    t.start()

实例(twisted.python.threadpool)

#!/usr/bin/env python
# coding:utf-8
import  contextlib
doing = []

@contextlib.contextmanager
def show(li,item):
    # print "before"
    doing.append(item)
    yield
    doing.remove(item)

print len(doing)

with show(doing,1):
    print ‘with in‘
    print len(doing)

print len(doing)

 

时间: 2025-01-16 06:58:09

线程池的要点分析的相关文章

几种线程池的实现分析(转)

1. 前言 在阅读研究线程池的源码之前,一直感觉线程池是一个框架中最高深的技术.研究后才发现,线程池的实现是如此精巧.本文从技术角度分析了线程池的本质原理和组成,同时分析了JDK.Jetty6.Jetty8.Tomcat的源码实现,对于想了解线程池本质.更好的使用线程池或者定制实现自己的线程池的业务场景具有一定指导意义. 2. 使用线程池的意义 复用:类似WEB服务器等系统,长期来看内部需要使用大量的线程处理请求,而单次请求响应时间通常比较短,此时Java基于操作系统的本地调用方式大量的创建和销

Java线程池使用和分析(二) - execute()原理

相关文章目录: Java线程池使用和分析(一) Java线程池使用和分析(二) - execute()原理 execute()是 java.util.concurrent.Executor接口中唯一的方法,JDK注释中的描述是“在未来的某一时刻执行命令command”,即向线程池中提交任务,在未来某个时刻执行,提交的任务必须实现Runnable接口,该提交方式不能获取返回值.下面是对execute()方法内部原理的分析,分析前先简单介绍线程池有哪些状态,在一系列执行过程中涉及线程池状态相关的判断

java线程池框架源代码分析

相关类Executor,Executors.AbstractExecutorService.ExecutorService Executor:整个线程池运行者框架的顶层接口. 定义了一个execute方法.整个线程运行者框架的核心方法. public interface Executor { void execute(Runnable command); } ExecutorService:这是一个接口它继承自Executor,定义了shutdown.shutdownNow,awaitTermi

Java并发编程中线程池源码分析及使用

当Java处理高并发的时候,线程数量特别的多的时候,而且每个线程都是执行很短的时间就结束了,频繁创建线程和销毁线程需要占用很多系统的资源和时间,会降低系统的工作效率. 参考http://www.cnblogs.com/dolphin0520/p/3932921.html 由于原文作者使用的API 是1.6 版本的,参考他的文章,做了一些修改成 jdk 1.8版本的方法,涉及到的内容比较多,可能有少许错误. API : jdk1.8.0_144 ThreadPoolExecutor类 Java中线

浅谈服务器单I/O线程+工作者线程池模型架构及实现要点

转自 http://www.cnblogs.com/ccdev/p/3542669.html 单I/O线程+多工作者线程的模型,这也是最常用的一种服务器并发模型.我所在的项目中的server代码中,这种模型随处可见.它还有个名字,叫“半同步/半异步“模型,同时,这种模型也是生产者/消费者(尤其是多消费者)模型的一种表现. 这种架构主要是基于I/O多路复用的思想(主要是epoll,select/poll已过时),通过单线程I/O多路复用,可以达到高效并发,同时避免了多线程I/O来回切换的各种开销,

线程池的使用及ThreadPoolExecutor的execute和addWorker源码分析

说明:本作者是文章的原创作者,转载请注明出处:本文地址:http://www.cnblogs.com/qm-article/p/7821602.html 一.线程池的介绍 在开发中,频繁的创建和销毁一个线程,是很耗资源的,为此找出了一个可以循环利用已经存在的线程来达到自己的目的,线程池顾名思义,也就是线程池的集合,通过线程池执行的线程任务,可以很有效的去规划线程的使用.在java中大致有这几种线程池      newScheduledThreadPool  创建一个定长线程池,支持定时及周期性任

几种线程池的实现算法分析

1. 前言 在阅读研究线程池的源码之前,一直感觉线程池是一个框架中最高深的技术.研究后才发现,线程池的实现是如此精巧.本文从技术角度分析了线程池的本质原理和组成,同时分析了JDK.Jetty6.Jetty8.Tomcat的源码实现,对于想了解线程池本质.更好的使用线程池或者定制实现自己的线程池的业务场景具有一定指导意义. 2. 使用线程池的意义 复用:类似WEB服务器等系统,长期来看内部需要使用大量的线程处理请求,而单次请求响应时间通常比较短,此时Java基于操作系统的本地调用方式大量的创建和销

几种线程池的实现算法分析【转载】

原文地址 本文内容 前言 线程池意义 线程池技术要点 小节 参考源码 但凡是一个框架,基本都会涉及线程池问题.虽然你可能没有直接使用,那是因为框架帮你完成了这部分工作. 说,为什么需要线程池呢?试想,现在但凡是写一个服务程序,如果不采用并发或并行的方式,都有点对不起4核.8核,甚至更多的CPU内核,但是如果每次需要线程,都创建一次,这对性能的消耗,比较大,更加合适的做法是,在程序初始化时,一次性把所有线程都创建好,这样,当需要的时候,直接拿来过用~ 前言 在阅读研究线程池的源码之前,一直感觉线程

缓冲池,线程池,连接池

SSH:[email protected]:unbelievableme/object-pool.git   HTTPS:https://github.com/unbelievableme/object-pool.git 缓冲池 设计要点:包含三个队列:空缓冲队列(emq),装满输入数据的输入的队列(inq),装满输出数据的输出队列(outq),输入程序包括收容输入(hin),提取输入(sin),输出程序包括收容输出(hout)和提取输出(sout). 注意点:输入程序和输出程序会对缓冲区并发访