首页 > 编程语言 > 详细

线程池的要点分析

时间:2016-01-14 15:48:32      阅读:197      评论:0      收藏:0      [点我收藏+]

线程池的要点分析

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)

 

线程池的要点分析

原文:http://www.cnblogs.com/caoxiaojian/p/5130412.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!