Python 等待队列和事件

2024-01-11

我有一个队列和一个事件。我想在事件设置为 True 时退出循环,但是循环中有一个queue.get(),它会阻塞,直到其中有东西为止。

当设置 closeEvent 事件标志时,如何中止 self._commandQueue.get() 的等待?

注意:我想避免依赖于队列的阻塞性质,并希望根据队列的条件和事件标志进行阻塞

def _execute(self):
    while not self._closeEvent.isSet():
        nextCommand = self._commandQueue.get()
        self._commandExecutor.execute(nextCommand)
        self._commandQueue.task_done()

你需要像Windows这样的东西WaitForMultipleObjects()调用,但 python 事件和队列 API 不提供这样的野兽(但如果你是严格的 Windows,你可以使用 win32api 来使用它),所以如果你真的需要并行检查两个事件源,答案是'如果没有轮询(或者猴子修补事件类以允许它),你就不能”。

但如果你更灵活一点,你可以通过稍微重新定义你的命令队列来安排类似的事情。如果命令队列是PriorityQueue,一旦事件发出信号,您可以将正常作业以正常优先级排队,并让额外的进程以更高优先级排队“停止”令牌。

STOP = None

def _execute(self):
    while 1:
        nextCommand = self._commandQueue.get()[1]
        if nextCommand is STOP:
           break
        self._commandExecutor.execute(nextCommand)
        self._commandQueue.task_done()

def wait_for_stop_signal(self):
    self._closeEvent.wait()
    self._commandQueue.put((-1, STOP))

现在你跑wait_for_stop_signal在它自己的线程中,并且您有您想要的行为(但浪费一个线程而不是轮询,选择对您的用例来说更糟糕的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 等待队列和事件 的相关文章

  • Pandas 在列级别连接数据帧时添加键

    根据 Pandas 0 19 2 文档 我可以提供keys参数来创建结果多索引 DataFrame 一个例子 来自 pandas 文档 是 result pd concat frames keys x y z 我将如何连接数据框以便我可以在
  • 从 Django 基于类的视图的 form_valid 方法调用特殊(非 HTTP)URL

    如果你这样做的话 有一个 HTML 技巧 a href New SMS Message a 点击新短信打开手机的本机短信应用程序并预 先填写To包含所提供号码的字段 在本例中为 1 408 555 1212 以及body与提供的消息 Hel
  • 如何使用 Twython 将 oauth_callback 值传递给 oauth/request_token

    Twitter 最近刚刚强制执行以下规定 1 您必须通过oauth callbackoauth request token 的值 这不是可选的 即使您已经在 dev twitter com 上设置了一个 如果您正在执行带外 OAuth 请通
  • Colab 的使用限制持续多久?

    当我对同一帐户的两个笔记本同时使用两个 GPU 约半小时后 Colab 已 12 小时未运行 此消息不断弹出 由于 Colab 中的使用限制 您当前无法连接到 GPU 自从我上次使用 colab 以来已经过去了大约两个小时 但该消息仍然弹出
  • 如何在seaborn中绘制离散变量的分布图

    当我画画的时候displot对于离散变量 分布可能不像我想象的那样 例如 We can find that there are crevices in the barplot so that the curve in kdeplot is
  • 在 Java 中停止线程? [复制]

    这个问题在这里已经有答案了 我正在编写一段代码 该代码连接到服务器 使用该连接生成一堆线程并执行一堆 东西 在某些情况下 连接会失败 我需要停止一切并从头开始使用新对象 我想在对象之后进行清理 但在线程上调用 thread stop 但此方
  • 在Python中清理属于不同语言的文本

    我有一个文本集合 其中的句子要么完全是英语 印地语或马拉地语 每个句子附加的 id 为 0 1 2 分别代表文本的语言 无论任何语言的文本都可能有 HTML 标签 标点符号等 我可以使用下面的代码清理英语句子 import HTMLPars
  • 如何解决CDK CLI版本不匹配的问题

    我收到以下错误 此 CDK CLI 与您的应用程序使用的 CDK 库不兼容 请将CLI升级到最新版本 云程序集架构版本不匹配 支持的最大架构版本为 8 0 0 但发现为 9 0 0 发出后cdk diff命令 我确实跑了npm instal
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • Python 在 64 位 vista 上获取 os.environ["ProgramFiles"] 的错误值

    Vista64 计算机上的 Python 2 4 3 环境中有以下2个变量 ProgramFiles C Program Files ProgramFiles x86 C Program Files x86 但是当我运行以下命令时 impo
  • 如何使用 numpy 从一维数组创建对角矩阵?

    我正在使用 Python 和 numpy 来做线性代数 我表演了numpy对矩阵进行 SVD 以获得矩阵 U i 和 V 然而 i 矩阵表示为 1 行的 1x4 矩阵 IE 12 22151125 4 92815942 2 06380839
  • Erlang 进程如何(如果有的话)映射到内核线程?

    Erlang 因能够支持许多轻量级进程而闻名 它之所以能做到这一点 是因为它们不是传统意义上的进程 甚至不是 P 线程中的线程 而是完全在用户空间中的线程 这很好 实际上很棒 那么 Erlang 线程如何在多核 多处理器环境中并行执行呢 当
  • Objective C - 后台执行选择器并且分离新线程选择器?

    detachNewThreadSelector 和performSelectorInBackground 都用于在后台调用方法 2种方法有什么区别吗 或者它们的工作方式相同吗 它们本质上是相同的 但范式略有不同 他们在幕后做着完全相同的事情
  • 使用 os.forkpty() 创建一个伪终端以 ssh 到远程服务器并与其通信

    我正在尝试编写一个 python 脚本 它可以 ssh 到远程服务器 并可以从 python 客户端执行 ls cd 等简单命令 但是 在成功 ssh 到服务器后 我无法读取伪终端的输出 任何人都可以在这里帮助我 以便我可以在服务器上执行一
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 在 matplotlib 中将 3D 背景更改为黑色

    我在将 3D 图表的背景更改为黑色时遇到问题 这是我当前的代码 当我将facecolor设置为黑色时 它会将图表内部更改为灰色 这不是我想要的 fig plt figure fig set size inches 10 10 ax plt
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • “yield item”与 return iter(items) 相比有何优点?

    在下面的示例中 resp results 是一个迭代器 版本1 items for result in resp results item process result items append item return iter items
  • 如何从Python枚举类中获取所有值?

    我正在使用 Enum4 库创建一个枚举类 如下所示 class Color Enum RED 1 BLUE 2 我要打印 1 2 作为某处的列表 我怎样才能实现这个目标 您可以执行以下操作 e value for e in Color
  • 使用 python/scipy 进行 voronoi 和 lloyd 松弛

    如何使用 Qhull 确定哪些 voronoi 单元 按索引 是 正确的 由 现有顶点 组成 我正在尝试使用 LLoyds 算法和 scipy spatial Voronoi 它是 Qhull 的包装器 生成的输入来执行约束松弛 就代码而言

随机推荐

  • 相邻邻居求和[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如果给我数字 1 2 1 并且我想找到每个数字与其相邻邻居 在环中 重复多次的总和 我可以使用以下公式 base case x 1 y 2 z 1 r
  • 使用角度组件会破坏材质布局

    在 index html 中包含以下内容和一个简单的 ui 路由器状态 该状态将组件加载为模板 div class container div 使用存储在文件中的以下模板定义的组件
  • react-native-webview Typescript 错误:“WebView”无法用作 JSX 组件

    我正在尝试使用 Expo 和 TypeScript 来设置一个简单的 React Native 应用程序 以显示 WebView 我的App tsx文件包含以下内容 import Constants from expo constants
  • 玩!框架 - 创建简单的 html 链接

    我有一个使用多个 HTML 文件和一个 CSS 文件制作的网站 我目前正在尝试切换到 Play 斯卡拉框架 由于某种原因 我很难弄清楚如何将一个 html 页面链接到另一个页面 现在 我的所有 html 文件都保存在 views 文件夹中
  • 我在哪里可以购买 .app TLD? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以购买 app 顶级域名 TLD 我去了 Network Solutions GoDaddy 等
  • Nexus 支持批量上传工件吗?

    我想知道我们是否可以将工件批量上传到 Nexus 的存储库中 您可以通过多种方式做到这一点 使用 Nexus工件上传页面 http www sonatype com books nexus book reference ch04s05 ht
  • 触发器:插入的表如何工作?如何访问它的行?

    我有下表 Data Table name ID Identity column PCode Postal Code 我创建了以下触发器 CREATE TRIGGER Trig ON Data FOR INSERT AS BEGIN Sele
  • 为什么我的指令抛出“Error: $injector:unpr Unknown Provider”

    我正在努力将我的控制器 工厂和指令重构为推荐的Angular 风格指南 https github com johnpapa angular styleguide file templates and snippets for 角度片段 ht
  • .NETBeans + 请求范围 - 有可能吗?

    我有我的网络应用程序 我需要 当用户执行请求 我的意思是 调用页面 时 创建一个对象 该对象为每个请求 因此数据在每个请求时更新 和每个用户存储一些信息 它从数据库获取这些信息 所以UserA 与 UserB 不共享相同的对象 我曾经使用
  • 使用 Word 时出现运行时错误 462 Excel VBA

    第二次或第三次运行此循环时 我不断收到 462 错误 我不认为我有任何漂浮的物体 但也许我错过了一些东西 我对此有点陌生 该宏将从 Excel 中获取所有图表 将它们作为图片粘贴到 Word 中 调整它们的大小 保存文档并关闭它 For 循
  • PHP/JS - 动态创建缩略图或存储为文件

    对于图像托管 Web 应用程序 对于我存储的图像 是否可以使用 PHP 或其他方式 动态创建缩略图 或者我应该将 1 个或多个不同大小的缩略图保存到磁盘并加载它们 任何帮助表示赞赏 将缩略图保存到磁盘 图像处理需要大量资源 并且根据图像的大
  • 使用 fread 导入 csv 时出现“字符串中嵌入 nul”错误

    我有一个大文件 3 5G 我试图使用它导入data table fread 它最初是从一个 rpt 文件创建的 该文件以文本形式打开并保存为 CSV 这对于较小的文件 相同类型的数据 相同的列等 效果很好 这只是为了更长的时间范围和更广泛的
  • Chrome、Opera 和 Safari 中 Flash 下弹出弹出菜单

    我在以下位置创建了一个弹出导航菜单 http lixmebel com http lixmebel com gt 在 gt 下 在 Firefox 和 Internet Explorer 中 一切正常 菜单会在 Flash 上弹出 但在 C
  • kafka-console-consumer 自定义反序列化器

    我想使用我的自定义value deserializer使用 kafka console consumer 命令行工具时 像这样的事情 kafka console consumer bootstrap server kafka2 29092
  • 当只有其中之一进行类型检查时,为什么这两个隐式都匹配?

    我正在尝试诊断由不同的隐式扩展错误引起的编译器错误 这是我所看到的 scala Welcome to Scala 2 13 1 OpenJDK 64 Bit Server VM Java 1 8 0 252 Type in expressi
  • 如何循环空手道响应数组并将其传递到另一个 Web 服务响应的 json 路径中

    我正在使用空手道版本 0 8 0 1 我想执行以下步骤来测试一些响应 我做了一个获取网络服务 1 使用 jsonpath 从 Web 服务 1 的响应中查找货币值 currencies 第 2 步给出了以下结果 USD HKD SGD IN
  • 当结果具有相同分数时在 Azure 搜索中进行分页

    我在电子商务网站上使用 Azure 搜索 现在在搜索页面上遇到分页问题 当我重新加载搜索页面时 我可以获得不同的产品顺序 因此 当我使用分页时 我可以在不同页面上看到相同的产品 这一点至关重要 我开始研究出了什么问题 我在 Microsof
  • 从 cakephp 的数组中删除数组键

    打印数组 array Order gt array id gt 1 base price gt 65 min price gt 95 检索数据时是否可以删除键 Order 如果不是 我如何使用 array shift 或以一行结束并防止出现
  • Haskell 中类型安全的“read”

    向你学习 Haskell http learnyouahaskell com making our own types and typeclasses讨论以下数据类型 data Day Monday Tuesday Wednesday Th
  • Python 等待队列和事件

    我有一个队列和一个事件 我想在事件设置为 True 时退出循环 但是循环中有一个queue get 它会阻塞 直到其中有东西为止 当设置 closeEvent 事件标志时 如何中止 self commandQueue get 的等待 注意