Python 多线程

EN
EN
2023-04-05 / 0 评论 / 34 阅读 / 正在检测是否收录...

模拟10个人吃饭需要多少时间

多线程 线程守护与阻塞

import time
from threading import Thread

def funa():
    print("学习")
    time.sleep(1)
    print("看鲁迅的书呢")

def funb():
    print("休息")
    time.sleep(2)
    print("闭目养神呢")

if __name__ == '__main__':
    f1 = Thread(target=funa)
    f2 = Thread(target=funb)

    # 守护线程
    f1.daemon = True
    f2.daemon = True

    # 开启子线程
    f1.start()
    f2.start()

    # 阻塞主线程 等待子线程执行完
    f1.join()
    f2.join()
    print("这是主线程")

'''
>>>
学习
休息
看鲁迅的书呢
闭目养神呢
这是主线程

如果没有 join() 阻塞主线程
>>>
学习
休息
这是主线程
'''

线程封装 , start()和run()的区别

'''
1. 继承Thread
2. 重构run方法

线程执行是 无序的,他是有cpu来决定的。

start() 启动线程。声明子线程的函数已经就绪,等待被cpu执行
run()   允许线程。执行到这个子线程时,自动调用的方法
'''
import threading
from threading import Thread
import time

class Ourthrad(Thread):

    # 重构run方法
    def run(self):
        print(f"当前线程 {threading.current_thread().name}")
        #time.sleep(2)
        #print("啦啦啦")

if __name__ == '__main__':
    # 创建线程实例
    t1 = Ourthrad()
    t2 = Ourthrad()

    t1.start() #>>> 当前线程 Thread-1
    t2.start() #>>> 当前线程 Thread-2

    t1.run() #>>> 当前线程 MainThread
    t2.run() #>>> 当前线程 MainThread
0

评论 (0)

取消