线程池的要点分析
线程池的要点分析
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)
作者:曹小贱
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号