线程语法
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-----"
时间: 2024-12-28 20:22:25