模拟10个人吃饭需要多少时间
import time
t1 = time.time()
def eat(name):
print("%s 吃饭" % str(name))
time.sleep(1)
if __name__ == '__main__':
# 模拟10个人吃饭
for i in range(10):
# 单线程调用
eat(i)
t2 = time.time()
print('执行的时间:',t2-t1) #>>> 执行的时间: 10.00459885597229
'''
等上一个人吃完饭,下一个才能吃
'''
{/tabs-pane}
{tabs-pane label="多线程"}
import time
t1 = time.time()
def eat(name):
print("%s 吃饭" % str(name))
time.sleep(1)
if __name__ == '__main__':
# 模拟10个人吃饭
for i in range(10):
#多线程调用
t = threading.Thread(target=eat,args=(i,))
t.start() # 启动线程
t2 = time.time()
print('执行的时间:',t2-t1) #>>> 执行的时间: 0.0031862258911132812
'''
10个人可以同时吃饭
'''
{/tabs-pane}
多线程 线程守护与阻塞
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)