如何让一个进程等待多个资源?

2023-12-08

我目前正在使用 SimPy 来建模和模拟服务器进程,我希望该进程根据从何处接收此消息来执行不同的操作。

SimPy 文档展示了如何等待多个事件: 例如:yield event1 |事件2

不过,我目前正在尝试等待多个商店提供资源。

场景如下: 服务器 S 正在等待来自各个通道的消息。每个通道可能具有不同的特征,这些特征会影响消息到达它所花费的时间。

这是有问题的代码:

resources = [inchannel.get() for inchannel in inchannels]
msg = yield simpy.events.AnyOf(env, resources)

其中 inchannel 是一个 Stores 数组,它对服务器的各种输入通道进行建模。

我遇到的问题是,它似乎只接受来自其中一个通道的消息,无论它先收到哪个通道。收到第一条消息后,它会接受来自该通道的消息并忽略其他消息。

我还尝试过以下方法:

resource = inchannel[0].get() | inchannel[1].get() | ...
msg = yield resource

在这种情况下,它仅从 inchannel[0] 接收


您必须在每次迭代中创建一个新的 Get 事件列表。如果您重新使用旧列表,它仍将包含第一次迭代中触发的事件。

这应该有效:

inchannel = [simpy.Store(env) for i in range(3)]

while True:
    # Make a new list of Get events in each iteration
    events = [ic.get() for ic in inchannel]

    # Wait until (at least) one of them was triggered
    res = yield env.any_of(events)

    # Cancel all remaining requests, because you will make
    # new ones in the next iteration.
    # Do this *before* you yield anything
    [evt.cancel() for evt in evens]

    # Handle all messages (there *might* be more than one)
    for msg in res.values():
        handle_message(msg)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让一个进程等待多个资源? 的相关文章

  • Quartus17运行仿真RTL Simulation

    仿真按键下面有个波形 xff0c Quartus13应该是在开始Run Compilation按键旁边Tools gt Run Simulation Tool gt RTL Simulation
  • 【文献导读】XPBD: Position-Based Simulation of Compliant Constrained Dynamics

    作者 xff1a Miles Macklin amp Matthias Muller 单位 xff1a NVIDIA 时间 xff1a 2016 前言 本文要解决的主要问题是PBD中的刚度系数的迭代次数依赖问题 具体来说 xff0c 仿真效
  • 有没有可以模拟不稳定网络连接的程序? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我们需要模拟不稳定的网络连接 以尝试调试服务器 客户端应用程序中的一些连接问题 我想知道是否有任何程序可以模拟这些条件 例如在微弱的无线网络上 我指
  • 在Python 2.7中模拟按键事件

    我想要做的是在 Windows 上按 Python 脚本级别的任意键盘键 我尝试过 SendKeys 但它仅适用于 python 2 6 我尝试过的其他方法包括 import win32com client win32com client
  • Matlab/CUDA:海浪模拟

    我学过 模拟海水 Jerry Tessendorf 的文章并尝试对统计波模型进行编程 但我没有得到正确的结果 我不明白为什么 In my program I tried only to create a wave height field
  • 静脉中的端到端延迟

    我想计算静脉示例场景中的端到端延迟 我已经阅读了与此主题相关的旧邮件 但它们没有提供问题的真正解决方案 I used getCreationTime and simTime 功能 由此产生的延迟约为1 70 10 4 这种延迟对我来说没有意
  • 在Scheme(Fluent)中运行(do ...)内的代码与循环外的执行方式不同

    我的续集上一个问题 https stackoverflow com q 58906949 12388640 我正在使用 ANSYS Fluent 程序进行 CFD 模拟 该程序允许使用所谓的日志文件对模拟设置进行部分自动化 我刚刚知道该日志
  • 如何检测门逻辑仿真中的振荡?

    我正在用 C 编写基于周期的逻辑模拟 我想模拟组合电路和时序电路 组合电路很简单 但顺序电路给我带来了麻烦 我想检测振荡并显示适当的警告消息 有没有一种简单的方法来检查单个门可以改变其状态多少次并且仍然保持电路稳定 我考虑过 最小反馈弧集算
  • 一切都一样,在 C++ 中将数据输出到磁盘的最快方法是什么?

    我正在运行的模拟代码很大程度上受 CPU 速度的限制 我对将数据输入 输出到用户界面不感兴趣 只需在计算时将其保存到磁盘即可 减少开销的最快解决方案是什么 iostreams 打印 我之前读过 printf 更快 这取决于我的代码吗 如果不
  • C# 模拟键盘输入

    我需要知道如何模拟按键的键盘输入W S A D 我用过SendKeys没有任何效果以及InputSimulator库没有修复 我想做的是让游戏 战地 自然选择等较新的 FPS 游戏 等应用程序将这些模拟按键注册为真实的按键 我正在尝试制作一
  • 开源、纯Java物理/动力学库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个轻量级的 纯Java 物理引擎来对机器人运动控制进行一些模拟 我的要求 刚体物理 联合约
  • 模拟抛硬币一周?

    这不是家庭作业 我有兴趣在 R 中设置抛硬币的模拟 我想运行该模拟一周 R 中是否有一个函数可以让我在一段时间内 例如一周 启动和停止模拟 如果一切顺利的话 我可能想增加模拟周期的长度 例如 x lt rbinom 10 1 1 2 所以要
  • 群体行为问题

    昨天我看到了克雷格雷诺兹的Boids http www red3d com cwr boids 随后我想尝试一下用 Java 实现一个简单的 2D 版本 我已经根据以下内容整理了一个相当基本的设置康拉德 帕克的笔记 http www ver
  • python:几何布朗运动模拟[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions GBM 的
  • 在 pygame 物理模拟中添加 wxPython GUI 元素

    我做了一个pygame物理模拟 抛射运动 但它缺乏交互性 比如接受发射角度 速度等 我想添加带有增加 减少箭头的输入框 但不知道如何去做 谢谢您的帮助 也许你可以尝试PGU http www pygame org project 108 菲
  • 如何为ListBox(值)索引或树视图节点设置相同的按钮事件?

    我有 C Win form 如下所示 我也有一些数组作为列表框的菜单 public string ArrayMain 1 Water 2 Air 3 Soil 4 Fire public string ArrayWater 1 Salty
  • SimPy 资源有 3 个,每个资源都有不同的特征

    我试图模拟这样一种情况 我们有 5 台机器 它们的情况是 1 gt 3 gt 1 即中间的3个并行运行以减少它们所花费的有效时间 我可以通过创建值为 3 的 SimPy 资源来轻松模拟这一点 如下所示 simpy Resource env
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • 如何反向for循环?

    我正在制作一个水模拟程序 我需要它通过 y x 进行 for 循环 但我需要它先检查最底部的 y 然后向上检查 这是我的等级 lvl 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 我需要
  • 有效地分割数据并拟合分布

    对于一个项目 我收到了大量机密的患者级别数据 我需要对这些数据进行分布拟合 以便在模拟模型中使用它 我正在使用 R 问题是我需要拟合分布以获得至少 288 个独立分布 至少 6 个变量的 48 个子集 的形状 速率数据 该过程在变量之间会略

随机推荐

  • 如何在 MySQL 替换命令中使用正则表达式?

    我的目标是用包罗万象的链接替换数据库中的链接 我通常使用 REPLACE 命令来替换数据库中的字符串 但这次我遇到了困难 因为为了找到链接 我需要使用正则表达式 而这根本行不通 UPDATE node revisions SET body
  • R 抑制依赖项中的startupMessages

    我的 R 包的依赖项之一在加载时显示启动消息 我想抑制这些启动消息 到目前为止 我发现的唯一修复是从我的描述文件中的 Depends 行中删除有问题的包 然后打电话suppressPackageStartupMessages require
  • Android 选项卡 - 开始一个新活动

    TabHost 中有 4 个选项卡 分别是 A B C 和 D 现在每个选项卡只是一个索引页 单击其中任何一个都会显示不同的活动 问题是 当用户从选项卡中显示的内容中选择某些内容时 我需要启动另一个活动 其他活动也应该显示在父选项卡本身中
  • 使用谷歌分析跟踪重定向页面

    我正在尝试使用谷歌分析跟踪重定向页面 我有一个名为redirect php 当我访问像这样的网址时redirect php c 12345678 一个 php 函数对 sql 查找表进行查询以解码代码12345678使用先前插入的 url
  • 有条件地生成表格行中断

    我有一个 table 有两个单元格 如果设备是计算机 我想水平显示 如果设备是移动设备 我想垂直显示 我借用了一个JS函数来从这个答案中检测移动设备https stackoverflow com a 11381730 3298930效果很好
  • 在 PyGame 中,如何在不使用 sleep 函数的情况下每 3 秒移动一个图像?

    最近我学习了一些基本的Python 所以我正在使用PyGame编写一个游戏来提高我的编程技能 在我的游戏中 我想每3秒移动一个怪物的图像 同时我可以用鼠标瞄准它并点击鼠标射击它 一开始我尝试使用时间 睡眠 3 但结果却暂停了整个程序 并且我
  • iCloud 仪表板:无法将 CloudKit 架构部署到生产环境 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我有一个已发布的应用程序 具有现有的生产模式 我对开发模式进行了更改 现在我想部署到生产中 点击后Deploy Schema to Production 弹出对话框显示The
  • Python 中的 CSV 在 Windows 上添加额外的回车符

    import csv with open test csv w as outfile writer csv writer outfile delimiter quoting csv QUOTE MINIMAL writer writerow
  • Python Tkinter 滑块自定义

    I m new with tkinter and I want to create a slider like the one in this picture 但我不知道这是否可能 所以我的问题是 这可能吗 有人为我提供快速教程或其他东西吗
  • 使用 rlang 将权重传递给 glm()

    我想通过weights to glm 通过函数而无需使用eval substitute or do call 方法 但使用rlang 这描述了一个更复杂的底层函数 Toy data mydata dplyr tibble outcome c
  • 文件上传|无需刷新页面 |支柱2 |无闪光|

    问题描述 我想使用JSP创建一个文件上传屏幕 该屏幕将允许用户在屏幕上选择多个文件 但所有文件都只有一个 上传 按钮 单击上传按钮后 应在 Action 类中获取所有文件对象 但重要的是提交后页面不应该刷新 同一屏幕上还会显示其他信息 这些
  • 将数据从子组件传递到父组件(子组件通过路由加载)

    我有这个问题 Chat是一个父组件 它有Messages子组件 我有 url s chat chat id 所以我可以得到 id参数输入Messages组件与路由参数 但我需要那个 id in Chat成分 所以如果我加载 chat 46
  • jquery可以读取外部页面的dom元素吗?

    是否可以读取和解析 cnn com 例如 等第三方网站的 dom 元素 以便我可以获得 div a p 标签并读取位置和大小信息 jquery 可以解析并显示您的 javascript 代码运行的网页信息 但是如果我们向 load 命令提供
  • 如何反序列化 PHP 序列化数组/变量/类并在 C# 中返回合适的对象

    目标是反序列化PHP 序列化C 中的字符串并获取合适的对象 有什么方法可以在 C Net 中实现这一点吗 更具体 我们需要创建一个应用程序 通过 HTTP 与特定网站进行通信 该网站返回所需的信息 幸运 不幸的是 我们没有网站权限 因此数据
  • 启用文本过滤器时如何引用列表项的原始位置?

    当我使用编辑文本来过滤项目时 列表位置变得一团糟 并且项目不再调用正确的意图 任何帮助表示赞赏 lv setOnItemClickListener new OnItemClickListener public void onItemClic
  • 多个 Rails 应用程序 nginx 乘客配置

    I used this设置服务器指南 这是我的配置 nginx nginx conf user www data worker processes auto pid run nginx pid events worker connectio
  • 了解 Spring @Autowired 的用法

    我正在阅读 spring 3 0 x 参考文档来理解 Spring Autowired 注释 3 9 2 Autowired 和 Inject 我无法理解下面的例子 我们是否需要在 XML 中做一些事情才能使其正常工作 实施例1 publi
  • 监听JTextArea的粘贴事件

    我想在用户将文本粘贴到我的 JTextArea 中时调用一个函数 将文本粘贴到 JTextArea 时是否会生成任何事件 我可以使用哪个侦听器来触发此事件的函数 一种可能的解决方案 我希望有人有更好的解决方案 是替换按键绑定Action负责
  • Angular 2 Aot 错误:致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足

    在运行 Angular 2 AOT rollup 时我遇到了上述问题 lt Last few GCs gt 144518 ms Mark sweep 1317 0 1404 4 gt 1317 0 1404 4 MB 1522 9 0 0
  • 如何让一个进程等待多个资源?

    我目前正在使用 SimPy 来建模和模拟服务器进程 我希望该进程根据从何处接收此消息来执行不同的操作 SimPy 文档展示了如何等待多个事件 例如 yield event1 事件2 不过 我目前正在尝试等待多个商店提供资源 场景如下 服务器