使用管道的Python多进程非阻塞相互通信

2024-04-26

是否可以使用管道以非阻塞方式接收进程间通信?

考虑以下代码:

from multiprocessing import Process, Pipe
import time

def f(conn):
    time.sleep(3)
    conn.send('Done')
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    while True:
       print('Test')
       msg = parent_conn.recv()
       if msg == 'Done':
          break
    print('The End')
    p.join()

The parent_conn.recv()将阻塞 while 循环,直到收到消息。有没有办法以非阻塞的方式监听消息?


使用轮询功能。像这样改变你的 while 循环:

 while True:
       print('Test')
       if parent_conn.poll():
           msg = parent_conn.recv()
           if msg == 'Done':
              break
       else:
           do_something_else()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用管道的Python多进程非阻塞相互通信 的相关文章

随机推荐

  • Django 模板如何将数字转换为单词

    我正在寻找一个模板标签来将 522 这样的值转换为 522 查看我遇到的文档 django contrib 人性化 它有一个内置标签 intword 但它只适用于数字大于一百万的数字 作为替代解决方案 我使用以下函数创建了一个标签将数字转换
  • 如何在 Windows 中拦截 DNS 查询

    我正在研究如何在 Windows 中拦截 DNS 查询 以一种不需要将 DLL 注入到每个进程中的方式 并且理想情况下能够根据发出查询的进程做出决策 因此简单的 DNS 代理服务器是不够的 从表面上看 DNS 查询所采用的路径如下所示 某些
  • 如何设置 Nginx URI 以修复重定向到指定位置中的空 URI

    问题 当使用包含 符号的无效 URL 访问我们的网站时 Nginx 会抛出 400 Bad Request 错误 我们希望将请求重写为 WordPress 404 页面 而不是 Nginx 页面 我已经尝试过以下方法 location 40
  • .NET 字典:获取现有值或创建并添加新值

    我经常发现自己在创造一个Dictionary http msdn microsoft com en us library xfhwa508 aspx具有不平凡的价值类别 例如List http msdn microsoft com en u
  • iText 将组件摆动到多个页面

    我有一个 jpanel 它有一个相当大的高度 我想将其绘制成 pdf 大约 2 3 页 有时甚至更多 我的问题是 它不会传递到下一页 它只会尝试将所有内容插入第一页 当页面结束时 它不会传递到下一页 我搜索了一下 尝试了我能想到的一切 但一
  • 有没有办法在旧项目中使用像(Firebase Crashlytics)这样的androidX库而不将项目迁移到androidX?

    强调文字我需要在项目中使用 firebase Crashlytics 但不想将项目迁移到 android 我想知道是否可能 如何在未迁移到Androidx的项目中使用Androidx库 https stackoverflow com que
  • Java BeanUtilsBean:将日期转换为字符串

    我正在尝试跑步BeanUtilsBean getInstance populate 但在 HTML 表单上 有一个字段包含出生日期的字符串表示形式 对象 bean 的字段类型为java util Date 阅读 Ggl 的一些搜索 这些搜索
  • 使用版本控制时处理多台计算机上的 web.config 差异

    我确信每个人都必须处理这些情况 我们检查我们的源代码控制解决方案 每台开发机器都有自己的资源用于调试 构建和测试 最常见的是 网络服务器 IIS 数据库 SQL Web服务器很容易处理 每个开发机器都会有自己的proj user文件来指定不
  • 从 XGrabKeyboard 中排除一些键

    考虑一个应用程序 需要在聚焦时抓住键盘 以便捕获所有窗口管理器命令 Alt F4 等 进行处理 现在 这有一个缺点 即当键盘被抓住时 用户无法通过键盘切换到另一个应用程序或虚拟桌面 我想要一个用户定义的组合键白名单 例如 用于切换虚拟桌面的
  • 如何使用plotlyexpress添加置信区间fillcontour?

    我正在使用plotlyexpress 添加趋势线 现在如何像seaborn regplot 中那样绘制置信区间 df px data tips fig px scatter df x total bill y tip trendline o
  • 变换/不透明度属性是否调用浏览器传送带中的绘制步骤

    调查浏览器的渲染工作原理我注意到在带有启用标志的 Chrome 开发工具中paint flashing触发更改时的绘制步骤transform opacity财产 使用代码查看这些屏幕截图 示例1 transform opacity财产 le
  • dplyr & r: 匿名函数可能需要加上括号

    我想我偶然发现了拼写错误的第一个错误 我正在使用 R 和 dplyr 运行以下代码 gt foobar c 1 2 3 gt foobar gt as character 1 1 2 3 这工作正常 现在我尝试通过匿名函数运行它 gt fo
  • zend 框架 where 查询中的语句

    我如何使用 php 和 zend 框架在 mysql 查询中使用 And or 现在我正在使用这个 db Zend Db Table getDefaultAdapter select new Zend Db Select db select
  • 如何以正确的方式从 JavaScript 获取 contextPath?

    使用基于 Java 的后端 即 servlet 和 JSP 如果我需要来自 JavaScript 的 contextPath 建议的模式是什么 为什么 我能想到几种可能性 我还缺什么吗 1 将 SCRIPT 标签烧录到页面中 并在某些 Ja
  • vim 脚本:如何在 vim 函数中执行命令

    为什么会出现以下情况 let s colorschemes synic ir black let s colorscheme idx 0 function RotateColorscheme let s colorscheme idx 1
  • 计算 docx 文档中的页数

    我有一个word文件 我想计算其中有多少页 该文件是使用 Docx4Java 创建的 以前有人这样做过吗 Thanks docx4j 没有页面布局模型 因此它无法告诉您页数 您可以使用 FOP 的页面布局模型获得大致的页数 docx4j 的
  • 使用 iOS 7 SDK 构建时 UITextView 会自动换行

    我有一个UITextView里面一个UIScrollView效果很好iOS 6建造自xcode 4 x 但是现在构建xcode 5它无法正常工作 即使在iOS 6 问题是文本会随着屏幕宽度换行 即使UITextView and UIScro
  • C# 中参数/参数之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 参数和参数有什么区别 https stackoverflow com questions 156767 whats the difference between an argument and a p
  • Delphi 的免费软件数据透视表组件?

    Delphi 是否有开源或免费软件的数据透视表组件 据我所知 Delphi 没有免费的枢轴组件 在 Torry net 上查找 delphi 中最著名的枢轴组件是 Develop Express 的 ExpressPivotGrid Sui
  • 使用管道的Python多进程非阻塞相互通信

    是否可以使用管道以非阻塞方式接收进程间通信 考虑以下代码 from multiprocessing import Process Pipe import time def f conn time sleep 3 conn send Done