爬虫-多进程(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方法了
好好学习,天天向上
原文地址:https://www.cnblogs.com/topass123/p/13340160.html