from multiprocessing import Process
from threading import Thread
import time
deftask():whileTrue:passif __name__ =='__main__':for i inrange(6):# t = Process(target=task,)
t = Thread(target=task)
t.start()
2 测试计算密集型和io密集型执行时间
from multiprocessing import Process
from threading import Thread
import time
deftask():
count=0for i inrange(1000000):
count+=i
if __name__ =='__main__':
ctime=time.time()
ll =[]for i inrange(10):# t = Process(target=task) # 0.24833464622497559
t = Thread(target=task)# 0.5340824127197266
t.start()
ll.append(t)for t in ll:
t.join()print(time.time()-ctime)deftask():
time.sleep(2)if __name__ =='__main__':
ctime=time.time()
ll=[]for i inrange(10):# t = Process(target=task) # 2.1586403846740723
t = Thread(target=task)# 2.0035741329193115
t.start()
ll.append(t)for t in ll:
t.join()print(time.time()-ctime)
3 通过递归锁解决课上死锁现象
from threading import Thread,RLock
import time
import random
mutexA = mutexB = RLock()defeat_apple(name):
mutexA.acquire()print('%s获取到了a锁'%name)
mutexB.acquire()print('%s获取到了b锁'%name)print('开始吃苹果,并且吃完了')
mutexB.release()print('%s 释放了b锁'%name)
mutexA.release()print('%s 释放了a锁'%name)defeat_egg(name):
mutexB.acquire()print('%s 获取到了b锁'%name)
time.sleep(2)
mutexA.acquire()print('%s 获取到了a锁'%name)print('开始吃鸡蛋,并且吃完了')
mutexA.release()print('%s释放了a锁'%name)
mutexB.release()print('%s释放了b锁'%name)if __name__ =='__main__':
ll=['egon','alex','tank']for name in ll:
t = Thread(target=eat_apple,args=(name,))
t1 = Thread(target=eat_egg,args=(name,))
t.start()
t1.start()