1. 程式人生 > 實用技巧 >爬蟲-多程序(10)

爬蟲-多程序(10)

#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方法了