上一篇文章: Python线程专题2:多线程共享全局变量
下一篇文章: Python线程专题4:Timer对象、Lock对象、Rlock对象
Thread类用于表示单独的控制线程。segmentfault
t=Thread(group=None,target=None,name=None,args=(),kwargs={}) 建立一个新的Thread实例:t group:为之后扩张保留的,默认为None target:一个可调用对象,线程启动时,run()方法将调用此对象 name:线程名称,默认建立一个“Thread-N”格式的惟一名称。 args:传递给target函数的参数元祖 kwargs:传递给target的关机字参数的字典。
t.start():经过在一个单独的控制线程中调用run(),启动线程,此方法只能被调用一次。 t.run():线程启动时将调用此方法。默认状况下,他会调用目标函数target。还能够在Thread的子类中从新定义此方法。 t.join([timeout]):阻塞线程,等待直到线程终止或者出现超时为止。timeout是以秒为单位的超时时间。 线程启动以前不能调用此方法,不然会报错。 t.is_alive:若是线程是活动的,返回True,不然返回False,从start()返回的那一刻开始,线程就是活动的, 直到run()方法终止为止。 t.name:线程名称,这个字符串用于惟一标识,能够根据须要将它更改成更有意义的值, t.ident:整数线程标识符,若是线程还没有启动,它的值为None。 t.daemon:若是线程是后台线程,该值为True,不然未False。当不存在任何任何活动的非后台进程时,整个程序会退出。
#利用Thread对象,简单建立一个线程,并启动一个函数 from threading import Thread import time def mark(interval): print("循环等待时间时间%d,等待前时间:%s"%(interval,time.ctime())) time.sleep(interval) print("等待后的时间:%s"%time.ctime()) if __name__=="__main__": t=Thread(target=mark,args=(3,)) t.daemon=False#设置为非后台线程,否则会看不到自线程打印效果主线程就直接关闭了 #下面一句会报错,必须在start()方法以后调用 #t.join(3) t.start() #下面语句也会报错,由于start只能调用一次 #t.start() print("end")
代码:多线程
#经过继承Thread,实现线程类 from threading import Thread import time class MyThread(Thread): def __init__(self,interval): #下面语句用来调用基类方法,必须调用 Thread.__init__(self) self.daemon=False self.interval=interval def run(self): print("循环等待时间时间%d,等待前时间:%s" % (self.interval, time.ctime())) time.sleep(self.interval) print("等待后的时间:%s" % time.ctime()) if __name__=="__main__": t=MyThread(3) t.start() #为了方便查看打印效果,加了一秒延迟 time.sleep(1) print("end")
结果:ide