多线程编程分为两种方式:

    1. 实例化Thread
    1. import time
    2. from datetime import datetime
    3. from threading import Thread
    4. def sleep_tast(sleep_time):
    5. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    6. print(f"sleep {sleep_time} seconds start!")
    7. time.sleep(sleep_time)
    8. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    9. print(f"sleep {sleep_time} seconds end!")
    10. if __name__ == "__main__":
    11. start_time = time.time()
    12. # 当程序启动的时候会默认开启一个主线程
    13. # 如何让主线程等到其它线程执行完后才继续执行, join方法
    14. # 主线程给子线程2.5s的时间,如果执行不完也会结束,防止子线程占用资源卡死,setDaemon方法 守护线程
    15. t1 = Thread(target = sleep_tast, args = (2,))
    16. t1.setDaemon(True)
    17. t1.start()
    18. t2 = Thread(target = sleep_tast, args = (3,))
    19. t2.setDaemon(True)
    20. t2.start()
    21. # t2.join()
    22. time.sleep(2.5)
    23. end_time = time.time()
    24. print(f"last_time:{end_time - start_time}")
    1. 继承Thrad类
    1. from threading import Thread
    2. import time
    3. from datetime import datetime
    4. class SleepThread(Thread):
    5. def __init__(self, sleep_time):
    6. self.sleep_time = sleep_time
    7. super().__init__() # 调用父类的init方法
    8. def run(self):
    9. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    10. print(f"sleep {self.sleep_time} seconds start!")
    11. time.sleep(self.sleep_time)
    12. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    13. print(f"sleep {self.sleep_time} seconds end!")
    14. if __name__ == "__main__":
    15. start_time = time.time()
    16. # 当程序启动的时候会默认开启一个主线程
    17. # 如何让主线程等到其它线程执行完后才继续执行, join方法
    18. # 主线程给子线程2.5s的时间,如果执行不完也会结束,防止子线程占用资源卡死,setDaemon方法 守护线程
    19. t1 = SleepThread(2)
    20. t1.setDaemon(True)
    21. t1.start()
    22. # t1.join()
    23. t2 = SleepThread(3)
    24. t2.setDaemon(True)
    25. t2.start()
    26. time.sleep(2.5)
    27. end_time = time.time()
    28. print(f"last_time:{end_time - start_time}")