爬蟲-多程序(10)
阿新 • • 發佈:2020-07-19
#1. 例項化Thread #2. 繼承Thread類 import time from threading import Thread def sleep_task(sleep_time): print("sleep {} seconds start!".format(sleep_time)) time.sleep(sleep_time) print("sleep {} seconds end!".format(sleep_time)) class SleepThread(Thread): def __init__(self, sleep_time): self.sleep_time= sleep_time super().__init__() def run(self): print("sleep {} seconds start!".format(self.sleep_time)) time.sleep(self.sleep_time) print("sleep {} seconds end!".format(self.sleep_time)) if __name__ == "__main__": start_time = time.time() t1 = Thread(target=sleep_task, args=(2,)) t1.setDaemon(True) t1.start() t2= Thread(target=sleep_task, args=(3,)) t2.setDaemon(True) t2.start() # t1.join() # t2.join() time.sleep(1) end_time = time.time() print("last_time: {}".format(end_time-start_time)) # # #1.當開啟一個程式的時候,會預設啟動一個主執行緒 # #2. 如何在主線等到其他執行緒執行完以後才繼續執行, join, setDaemon
區分join與setDaemon
join ()方法:
主執行緒A中,建立了子執行緒B,並且在主執行緒A中呼叫了B.join(),那麼,主執行緒A會在呼叫的地方等待,直到子執行緒B完成操作後,
才可以接著往下執行,那麼在呼叫這個執行緒時可以使用被呼叫執行緒的join方法。
setDeamon
程式執行中,執行一個主執行緒,如果主執行緒又建立一個子執行緒,主執行緒和子執行緒就分兵兩路,分別執行,那麼當主執行緒完成想退出時,會檢驗子執行緒是否完成。
如果子執行緒未完成,則主執行緒會等待子執行緒完成後再退出。但是有時候我們需要的是,只要主執行緒完成了,不管子執行緒是否完成,都要和主執行緒一起退出,這時就可以用setDaemon方法了