Time will tell.
在面向对象编程中,创建和销毁对象是很费时间的。
创建一个对象要获取内存资源或者其它更多资源。虚拟机会跟踪每一个对象,以便对象销毁后进行垃圾回收。所以提高服务程序效率的方法就是尽可能减少创建和销毁对象的次数。
如何利用已有对象来服务就是一个需要解决的关键问题,其实这是一些"池化资源"技术产生的原因。
线程池可以理解为是一个存放很多线程的单位,同时还有一个对应的任务队列。整个执行过程就是使用线程池中已有有限的线程把任务 队列中的任务做完。这样做的好处就是不需要为每个任务都创建一个线程,因为当你创建第100个线程来执行第100个任务的时候,可能前面已经有50个线 程结束工作了。因此重复利用线程来执行任务,减少系统资源开销。
Python实现代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Python的线程池实现
import Queue
import threading
import sys
import time
import urllib
#替我们工作的线程池中的线程
class MyThread(threading.Thread):
def __init__(self, workQueue, resultQueue,timeout=30, **kwargs):
threading.Thread.__init__(self, kwargs=kwargs)
#线程在结束前等待任务队列多长时间
self.timeout = timeout
self.setDaemon(True)
self.workQueue = workQueue
self.resultQueue = resultQueue
self.start