在 python 中使用 get_nowait() 不会引发空异常

2023-12-23

我有一个进程间队列,通常是空的,并且偶尔会出现一些东西。在我的一个线程中,我想定义一个像这样的 while 循环:

def mythread(queue1):

    while (queue1.get_nowait() != 1):
        #do stuff

这非常有效,直到队列为空,在我的情况下,这种情况很快就会发生。当队列为空时,调用 get_nowait() 或 get(False) 会引发空队列异常。有没有什么方法可以在不阻塞且不引发空异常的情况下检查队列?


use empty method

if queue1.empty():
   pass
else:
   # get items from the queue

注意:医生说“不可靠”(不是开玩笑)。

我想那是因为它可以返回True(队列为空)同时发布消息,因此该操作不像捕获异常那样原子。嗯,接下来是一个get_nowait()我认为这并不重要,除非其他线程也可以消耗该队列,在这种情况下,可能会发生竞争情况,并且当您尝试从中读取时,队列可能为空!

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

在 python 中使用 get_nowait() 不会引发空异常 的相关文章

  • Docx 缺少属性

    我正在尝试使用 python 中的 docx 库来考虑 word 文档 问题是 无论我导入什么 我都会收到有关 无属性 的错误消息 例如 文档 from docx import Document 给出输出 cannot import nam
  • 线程池,C++

    我正在使用 C 开发一个网络程序 我想实现一个 pthread 池 每当我从接收套接字接收到一个事件时 我都会将数据放入线程池中的队列中 我正在考虑创建 5 个独立的线程 并将持续检查队列以查看是否有任何传入数据需要完成 这是一个非常简单的
  • 如何将 numpy rearray 的子集转换为连续数组?

    我有一个recarray来自读取 csv 文件 我有兴趣将列的子集转换为连续浮点数组 我想避免将它们转换为列表或将它们一一堆叠 我尝试了中的建议https stackoverflow com a 11792956 https stackov
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • 在 Three.js 中从 Web Worker 加载纹理

    当将大纹理图像应用到网格上一段明显的时间时 Three js 会锁定浏览器的主线程 让我们考虑以下示例 var texLoader new THREE TextureLoader texLoader load someLargeTextur
  • py2neo 引发完成(自我)错误

    使用 py2neo 时 我在尝试附加事务时收到以下错误 statement MERGE a Person name actorName n MERGE b Series title actorsFields 3 year actorsFie
  • Python 中的错误? threading.Thread.start() 并不总是返回

    我有一个很小的 Python 脚本 在我看来 threading Thread start 表现出意外 因为它不会立即返回 在线程内我想调用一个方法boost python基于对象 不会立即返回 为此 我将对象 方法包装如下 import
  • matplotlib xkcd 无法在 Mac 上运行

    我在可视化 matplotlib xkcd 图时遇到小问题 通过简单地尝试执行上找到的示例matplotlib org http matplotlib org examples showcase xkcd html 当我执行 xkcd py
  • 使用 boost::thread 特定的 ptr<>::get() 是否会很慢?有什么解决方法吗?

    我目前正在使用 Valgrind 的 Callgrind 分析一个存在性能问题的应用程序 在查看分析数据时 似乎有 25 的处理时间花费在boost detail get tss data在主要目的是物理模拟和可视化的应用程序中 get t
  • 使用一次递归调用实现递归

    给定一个函数如下 f n f n 1 f n 3 f n 4 f 0 1 f 1 2 f 2 3 f 3 4 我知道使用递归来实现它 并在一个函数内进行三个递归调用 但我想在函数内仅使用一次递归调用来完成此操作 怎样才能做到呢 要实现使用
  • 如何限制Erlang VM(BEAM)使用的核心数量?

    我正在具有 2 个四核 Xeon E5520 2 2GHz 24 0GB RAM 和 Erlang R15B02 启用 SMP 的节点上运行实验 我想知道是否可以限制Erlang VM使用的核心数量 以便我可以暂时禁用一些核心并逐步增加数量
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 从 Invoke 方法获取 RETURN

    我正在尝试从另一个线程上的列表框项目中读取值 我尝试创建一种新方法来运行调用命令 我可以设法将命令发送到列表框 例如通过调用方法添加 但我似乎无法得到响应 我似乎无法获取该项目的值 我尝试了几种方法 一旦我将它从空变为字符串 事情就开始变得
  • Python 2 的 `exceptions` 模块在 Python3 中丢失了,它的内容到哪里去了?

    一位朋友提到 对于 Python 2 假设您在命令行上的路径环境变量中有它 pydoc exceptions 非常有用 知道它应该可以为他每周节省几分钟的网络查找时间 我自己每周都会用谷歌搜索一次例外层次结构 所以这对我来说也是一个有用的提
  • pygame:使用 sprite.RenderPlain 绘制精灵组的顺序

    我有一个精灵组 需要按一定的顺序绘制 以便其精灵按应有的方式重叠 然而 即使使用运算符模块函数 sorted self sprites key attrgetter y x 对组进行排序 顺序也是错误的 我该如何解决这个问题 直截了当地说
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • .NET UI 元素线程限制的原因

    我们知道 除了实例化元素的线程之外 不可能从任何线程执行操作任何 UI 元素属性的代码 我的问题是 为什么 我记得当我们使用 COM 用户界面元素时 在 COM Visual Basic 6 0 时代 所有 UI 元素都是使用 COM 类和

随机推荐

  • Ruby on Rails 301 重定向

    我向某些模型添加了 slugs 但由于 SEO 我需要从旧链接进行 301 重定向 老的 http host com foo 1 new http host com foo foo slug 问题 这种情况下如何实现301重定向呢 是否可以
  • 使用axios发送请求时如何设置代理?

    我正在使用一个名为 并发 的包在本地主机上同时运行我的客户端和服务器 客户端在端口 3000 上运行 而服务器在端口 5000 上运行 我已按以下方式在服务器的 package json 中设置代理 proxy https localhos
  • 将全局样式表移至 中的样式组件上方

    我目前import在我的一个组件中使用 CSS 文件 这些样式表添加为link标签在 并将在全球范围内推出 import src styles normalize module css 我也在使用样式组件 目前 link全局CSS生成的标签
  • 游戏关卡的数据结构

    我正在使用 JavaScript 创建一个平台游戏canvas完全基于图块 在游戏中存储物品块 墙壁 地板 物品 的最佳方法是什么 问题是每块瓷砖都可以被摧毁或创建 目前我有一个 2D 数组 因此我能够快速检查某个项目是否位于特定的 X 和
  • 如何使用 javascript api v3 在 flash 中显示 Google 地图?

    我知道有一个用于 flash 的 api 但它已被弃用 我如何使用 javascript api v3 在 flash 中显示谷歌地图 你可以看看使用iFrame https github com flex users flex ifram
  • 在运行时以编程方式向 MVC 模型添加属性

    我试图在应用程序运行时以编程方式在模型中创建属性 我试图遵循达林 迪米特洛夫 Darin Dimitrov 在这篇文章中的回答如何在 MVC 3 中基于 XML 文件动态创建控件 https stackoverflow com questi
  • 我可以使用 Clojure 的派生来创建 defrecord 类类型的层次结构吗?

    我想做这样的事情 defrecord Base defrecord Person defrecord Animal derive Person Base derive Animal Base isa Animal Person 这可能吗 U
  • 获取带有 className 的行

    如何获取具有特定 className 的表中的第一行 var rows tr tbl var rows tr classname first tbl or var rows tr classname tbl first 文档在这里 http
  • 如果存在内部类,包含美元符号的 Java 类名将无法编译

    我定义了以下 Java 类 mac grek javajunk grek cat A B java class A B mac grek javajunk grek cat A java public class A public stat
  • 在单个 JBoss 实例上设置多个端口?

    问题背景 情况是这样的 我们正在运行一个来自战争的模拟器 servlet 我们正在模拟的 servlet 在一台机器上有许多实例 按端口号进行区分 我们只想部署一场可以通过许多端口访问的战争 到目前为止我们所拥有的 使用javaFilter
  • 并行处理多个文件的 bash 脚本

    我读过有关该主题的类似问题 但没有一个可以帮助我解决以下问题 我有一个 bash 脚本 如下所示 bin bash for filename in home user Desktop emak fa do mkdir filename cd
  • Rails 和页面特定的 Javascript

    好吧 我意识到这个问题已经被问过很多次了 但答案似乎从未解决我对此的问题 我有一个 js 文件 我只想将其包含在特定页面上 有许多回复建议我将文件放入文件夹中 然后在清单文件中仅引用这些文件夹 例如这个 Railscast 大约 06 20
  • 使用 Angular 2 处理 HTML5 事件(onfocus 和 onfocusout)

    我有一个日期字段 我想默认删除占位符 我正在使用 JavaScriptonfocus and onfocusout删除占位符的事件 任何人都可以帮助使用 angular2 指令吗
  • 为什么数组名称后面有括号和点而不是方括号?

    访问数组中的元素时 方括号的使用方式如下 X is an int and Numbers is an int array X Numbers 8 然而 在阅读其他人的代码时 我有时会发现以下语法 PBox SBox1 SBox2 are a
  • std::move 位于移动赋值运算符内

    我读到另一个问题 https stackoverflow com a 5976829 440509在实现移动构造函数时 最好对初始化列表中的每个成员进行 std move 因为如果该成员恰好是另一个对象 则将调用该对象的移动构造函数 就像这
  • HttpWebRequest getRequestStream 在多次运行时挂起

    我编写了一些代码来从侦听器发送和读取文本 这在第一次和第二次交换上运行良好 但在第三次发送时 调用之间有很长的延迟GetRequestStream 以及数据的实际写入 我已经按照此处的建议在发送端处理了输出流 以及流读取器和读取端的输入流
  • 在 R Synth 包中使用 dataprep 函数时出现令人困惑的错误

    我正在尝试使用 R 中的 Synth 包来探索某些政变对发生国家经济增长的影响 但我陷入了一个我无法理解的错误 当我尝试跑步时dataprep 我得到以下信息 Error in dataprep foo World predictors c
  • TypeError:callback.apply 不是allowDiskUse 之后的函数

    我有一个包含 100 万份文档的集合 我已经通过了以下选项allowDiskUse现在它抛出错误 TypeError callback apply is not a function 我已经搜索过这个但可以获得解决方案 请帮助 const
  • 有四个图标的工具栏如何设置像这样?

    有四个图标的工具栏如何设置像这样 我想在工具栏中设置四个类似图像的图标 我有制作工具栏 在 menu main xml 中设置图标 但我没有得到 为什么有人可以帮助我为什么它没有出现 样式 xml
  • 在 python 中使用 get_nowait() 不会引发空异常

    我有一个进程间队列 通常是空的 并且偶尔会出现一些东西 在我的一个线程中 我想定义一个像这样的 while 循环 def mythread queue1 while queue1 get nowait 1 do stuff 这非常有效 直到