Python模拟哲学家进餐问题
有两个哲学家坐在桌⼦上,桌⼦上放了两只筷⼦,编号分别是a和b,只有同时得到a、b两只筷⼦时哲学家才能吃饭,如果筷⼦a被哲学家1号抢到了,筷⼦b被哲学家2号抢到了,此时两位哲学家都想要得到对⽅⼿中的筷⼦然后去吃⼀⼝饭,但是⼜不肯主动放下⾃⼰⼿中的筷⼦给对⽅,此时就进⼊了漫长的等待对⽅释放⾃⼰想要的“资源”的过程,也就产⽣了死锁。
1import threading
2import time
3
4# 创建两个锁
5lock_a=threading.Lock()
6lock_b=threading.Lock()
7
8
9def philosopher_a():
10    for i in range(99):
11        # 上锁
12        lock_a.acquire()
13        print('哲学家a给lock_a加锁,抢到了筷⼦a')
14        lock_b.acquire()
15        print(f'哲学家a给lock_b加锁,抢到了筷⼦b,ab两只筷⼦到⼿,吃第{i+1}⼝饭')
16        # 解锁
17        lease()
18        print('哲学家a给lock_a解锁,释放了筷⼦a')
19        lease()
20        print('哲学家a给lock_b解锁,释放了筷⼦b')
21        # time.sleep(0.5)
22
23def philosopher_b():
24    for i in range(99):
25        # 上锁
26        lock_b.acquire()
27        print('哲学家b给lock_b加锁,抢到了筷⼦b')
28        lock_a.acquire()
29        print(f'哲学家b给lock_a加锁,抢到了筷⼦a,ab两只筷⼦到⼿,吃第{i+1}⼝饭')
30        # 解锁
31        lease()
32        print('哲学家b给lock_b解锁,释放了筷⼦b')
33        lease()
34        print('哲学家b给lock_a解锁,释放了筷⼦a')
35        # time.sleep(0.5)
36
37
38if __name__ == '__main__':
39    t1=threading.Thread(target=philosopher_a)
40    t2=threading.Thread(target=philosopher_b)
41    t1.start()
42    t2.start()
python怎么读取桌面上的文件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。