首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simpy请求特定资源

Simpy请求特定资源
EN

Stack Overflow用户
提问于 2018-09-11 19:59:47
回答 1查看 631关注 0票数 0

我有一个带有capacity=2的资源,两个插槽都有一个初始值作为属性。假设两个插槽的初始值都设置为1。现在进程请求资源,进程的值可以是1、2、3或4。这个进程值也类似于属性。现在我要模拟的是,当一个进程请求资源时,它首先将自己的值与两个插槽的值进行比较。它对具有相同值的槽进行优先级排序。如果所有插槽都没有相同的值,则随机选择。在进程释放该插槽之后,该插槽的值被更改为等于进程值。我的想法是使用FilterStore并将资源作为项目放入商店。但是,我如何设置项的属性,以及如何如上所述更改属性?我希望我把我的问题描述得很清楚。感谢您的任何意见。

EN

回答 1

Stack Overflow用户

发布于 2018-09-17 17:57:30

好的,这是我用来解决我的问题的一小段代码。我最初在一个类中定义了我的资源,但后来改变了它,并将资源直接放入FilterStore中。

代码语言:javascript
复制
import simpy

#class Pre_Assem:
#    def __init__(self, env, name, value):
#        self.nodes = simpy.Resource(env, capacity = 1) 
#        self.name = name
#        self.value = value

class Job:
    def __init__(self, env, name, release, value):
        self.env = env
        self.name = name
        self.release = release
        self.value = value


def Process(env, job, pre_assem):
    print('initial slot values: ', pre_assem.items)
    yield env.timeout(job.release)

    print('available slots before: ', pre_assem.capacity)
    request = yield pre_assem.get(lambda request: request['value'] == job.value) | pre_assem.get()
    print('available slots after: ', pre_assem.capacity)
    print('slot requested: ' , request)        

    print('slot is beeing used')
    yield env.timeout(10)
    print('slots after use: ', pre_assem.items)
    yield pre_assem.put({'value': job.value})
    print('new slots values: ', pre_assem.items)




env = simpy.Environment()
pre_assem = simpy.FilterStore(env, 2)

#preassem1 = Pre_Assem(env, 1, 1)
#preassem2 = Pre_Assem(env, 2, 1)
#pre_assem.items = [preassem1, preassem2]

pre_assem.put({'name':1, 'value':1})
pre_assem.put({'name':2, 'value':1})

jobs = [Job(env, 1, 0, 1),
        Job(env, 2, 0, 2), 
        Job(env, 3, 60, 3)]

for job in jobs:
    env.process(Process(env, job, pre_assem))
env.run()

它可以工作,但不能做我想要的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52275438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档