class Thread(_Verbose):
"""A class that represents a thread of control.
This class can be safely subclassed in a limited fashion.
"""
__initialized = False
# Need to store a reference to sys.exc_info for printing
# out exceptions when a thread tries to use a global var. during interp.
# shutdown and thus raises an exception about trying to perform some
# operation on/with a NoneType
__exc_info = _sys.exc_info
# Keep sys.exc_clear too to clear the exception just before
# allowing .join() to return.
__exc_clear = _sys.exc_clear
def __init__(self, group=None, target=None, name=None,
args=(), kwargs=None, verbose=None):
"""This constructor should always be called with keyword arguments. Arguments are:
*group* should be None; reserved for future extension when a ThreadGroup
class is implemented.
*target* is the callable object to be invoked by the run()
method. Defaults to None, meaning nothing is called.
*name* is the thread name. By default, a unique name is constructed of
the form "Thread-N" where N is a small decimal number.
*args* is the argument tuple for the target invocation. Defaults to ().
*kwargs* is a dictionary of keyword arguments for the target
invocation. Defaults to {}.
If a subclass overrides the constructor, it must make sure to invoke
the base class constructor (Thread.__init__()) before doing anything
else to the thread.
"""
assert group is None, "group argument must be None for now"
_Verbose.__init__(self, verbose)
if kwargs is None:
kwargs = {}
self.__target = target
self.__name = str(name or _newname())
self.__args = args
self.__kwargs = kwargs
self.__daemonic = self._set_daemon()
self.__ident = None
self.__started = Event()
self.__stopped = False
self.__block = Condition(Lock())
self.__initialized = True
# sys.stderr is not stored in the class like
# sys.exc_info since it can be changed between instances
self.__stderr = _sys.stderr
……
线程的使用方法
1、直接调用

2、继承调用

3、执行N多进程

4、守护线程
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__Author__ = ‘KongZhaGen‘
import threading
import time
# 定义用于线程执行的函数
def sayhi(num):
print "runing on number :%s"%num
time.sleep(3)
print ‘done‘,num
# main函数同时执行5个线程
def main():
for i in range(5):
t = threading.Thread(target=sayhi,args=(i,))
t.start()
# 定义一个线程m,执行main函数
m = threading.Thread(target=main,args=())
# m线程定义为守护线程
m.setDaemon(True)
m.start()
# 守护线程执行结束,其中的所有子线程全部被迫结束运行,接着继续执行其后的代码
m.join()
print "---------main thread done-----"
原文:http://www.cnblogs.com/kongzhagen/p/6707021.html