• 线程池的要点分析


    线程池的要点分析

    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)

     

  • 相关阅读:
    c/c++ const
    Lucene2.9.1使用小结(同样适用于Lucene 3.0 )
    java 对properties 文件的写操作
    oracle 建表序列插入值
    jxl 读取2003 excel 示例
    HttpClient 的使用
    小故事
    iText 导出word 经典实现
    使用dom4j 解析xml
    lucene 在项目中的使用
  • 原文地址:https://www.cnblogs.com/caoxiaojian/p/5130412.html
Copyright © 2020-2023  润新知