上一篇文章: 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