猫史档案馆


【Python作品分享】贪婪的哲学家和慷慨的哲学家——线程【作品秀】

用户:MathinChinaMathinChina查看:0 回复:0 评论:0 创建时间:2020-09-20T17:55:03


【作品展示】

center_image

 

【作品介绍】

运行时有点慢...

 

【作品源代码】


import unittest
import threading
import random
import time


class DiningPhilosopher(threading.Thread):

    running = True

    def __init__(self, xname, Leftfork, Rightfork):
        threading.Thread.__init__(self)
        self.name = xname
        self.Leftfork = Leftfork
        self.Rightfork = Rightfork

    def run(self):
        while(self.running):
            time.sleep(random.uniform(3, 13))
            print('%s is hungry.' % self.name)
            self.dine()

    def dine(self):
        fork1, fork2 = self.Leftfork, self.Rightfork

        while self.running:
            fork1.acquire(True)
            locked = fork2.acquire(False)
            if locked:
                break
            fork1.release()
            print('%s swaps forks' % self.name)
            fork1, fork2 = fork2, fork1
        else:
            return
        self.dining()
        fork2.release()
        fork1.release()

    def dining(self):
        print ('%s starts eating '% self.name)
        time.sleep(random.uniform(1,10))
        print ('%s finishes eating and now thinking.' % self.name)

def Dining_Philosophers():
    forks = [threading.Lock() for n in range(5)]
    philosopherNames = ('1st','2nd','3rd','4th', '5th')

    philosophers= [DiningPhilosopher(philosopherNames[i], forks[i%5], forks[(i+1)%5]) \
        for i in range(5)]

    random.seed()
    DiningPhilosopher.running = True
    for p in philosophers: p.start()
    time.sleep(30)
    DiningPhilosopher.running = False
    print (" It is finishing.")



class Fibo_Test(unittest.TestCase):
    def setUp(self):
        print("This is run before our tests would be executed")
    def tearDown(self):
        print("This is run after the completion of execution of our tests")

    def testfibocal(self):
        self.assertEqual(Dining_Philosophers(),None)

if __name__ == "__main__":
   unittest.main()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页