写入 Python 子进程的标准输入,而无需communicate()的阻塞行为

2024-01-21

如何使其成为非阻塞调用?osd_cat仅接受输入作为PIPE哪个需要p.communicate()调用使进程阻塞。还有其他方法可以设置吗stdin in Popen?

p = subprocess.Popen(('osd_cat',
                      '-d',
                      '{}'.format(interval)),
                     stdin=subprocess.PIPE)
p.communicate(message)

The p.communicate https://docs.python.org/3/library/subprocess.html#subprocess.Popen.communicate方法是向进程发送数据方面的一次性处理。

相反,直接写信给p.stdin https://docs.python.org/3/library/subprocess.html#subprocess.Popen.stdin。如果你想获得输出,你可以读取行p.stdout https://docs.python.org/3/library/subprocess.html#subprocess.Popen.stdout。确保你通过stdout=subprocess.PIPE在尝试读取之前传递给构造函数。

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

写入 Python 子进程的标准输入,而无需communicate()的阻塞行为 的相关文章

随机推荐

  • 在 Three.js 中将带有孔的 SVG 路径转换为挤压形状

    我有一个由 4 个多边形组成的形状 2 个无孔多边形和 2 个有孔多边形 这只是一个例子 实际上 可能存在由 50 个多边形组成的形状 其中 20 个是非孔多边形 30 个是孔多边形 在 SVG 路径中 可以通过组合 moveto s 和
  • FreeMarker编码混乱

    当我使用 FreeMarker 读取 UTF 8 编码模板时 特殊字符在浏览器中正确呈现 尽管freeMarkerConfig getDefaultEncoding 返回 Cp1252 如果我设置freeMarkerConfig setDe
  • 删除mongoDB中数组字段大小小于3的文档

    我有一个名为的 mongoDB 集合col有类似这样的文档 intField 123 strField hi arrField 1 2 3 intField 12 strField hello arrField 1 2 3 4 intFie
  • 实现自重置 XMLHttpRequest 对象

    我正在尝试使用 XMLHttpResponse 对象实现彗星风格的长轮询连接 这个想法是保持与服务器的开放连接 该服务器在可用时发送数据 伪造推送 XHR 对象完成后 我需要生成一个新对象来等待任何新数据 下面是一段代码 概述了一个有效的解
  • 如何自动调整移动网站的图像大小?

    我尝试了谷歌搜索 但仍然无法弄清楚如何根据各种移动设备的宽度调整图像的大小 这是我的尝试 CSS img test width 100 height auto HTML
  • 确定两个未排序的数组是否相同?

    给定两个unsorted arrays A and B具有不同的元素 确定是否A and B可以重新排列 使它们相同 我的策略如下 首先 使用确定性选择算法O N 是时候找到Max of A and Max of B 如果他们没有相同的Ma
  • 读取由空格分隔的单词,并且字符串值在批处理脚本中也包含空格

    我需要从批处理脚本读取注册表的默认值 某些项目的名称包含一些空格 另外我想在批处理文件中执行 for 循环一次两次 rem echo OFF setlocal ENABLEEXTENSIONS set KEY NAME HKEY CURRE
  • 如何在 Play 之外使用 Anorm?

    在 Scala 之外如何使用 Anorm 在玩的 Anorm 文档中 它简单地使用了类似的内容 DB withConnection implicit c gt val result Boolean SQL Select 1 execute
  • clang-query:检查函数参数类型的模板参数名称

    我有一个大项目 以及大量以下形式的 C 类成员函数 Return CClass MemberFunction Arg1 arg1 std weak ptr
  • 应用程序崩溃但没有 TestFlight 崩溃报告

    我有一位用户 使用 iPhone 5 报告说 我的应用程序在屏幕变黑 启动画面为黑色 后大约 15 秒后崩溃 用户下载了 TestFlight 版本 其中我在应用程序委托中包含了检查点 但我没有得到这些检查点被交叉的证据 而且我从未收到崩溃
  • 我可以用C++中的成员变量地址获取对象的引用吗?

    如果我只有该对象的成员变量的地址 是否可以获得对该对象的引用 struct example int var int main example exampleObject int point exampleObject var can i g
  • 让查询与参数和“like”一起使用

    我见过很多关于在 Sql 查询和 like 中使用参数的问题 但我已经尝试了所有我见过的编码方法 但仍然无法让我的查询给出结果 如果我在查询本身中输入一个值 它就会正常运行 当我运行列出的第一个查询时 出现错误 必须声明标量变量 Searc
  • QML 可以看到我的 Q_GADGET 但看不到 Q_OBJECT

    为什么我的可以Q GADGET在 QML JS 中可以完美阅读 但不是我的Q OBJECT 在 Ubuntu 14 04 上运行 Qt 5 8 0 我正在尝试返回一个列表 QVariantMap 的对象到 QML 我现在保持简单 没有指针等
  • 如果 body 有此类,则将此内容放入 #mydiv,否则将其他内容放入 #mydiv

    JS初学者在这里 我需要一个脚本帮助 根据页面正文标记是否具有 home 类来将不同的内容放置在 div 中 我正在尝试使用 hasClass html 来实现此目的 看起来应该非常简单 但我无法弄清楚 缺乏正确的语法知识 声明不正确 我不
  • 给定一个私钥,是否可以推导出它的公钥?

    根据我通过阅读各种材料所了解的一点点 公钥 私钥对是非对称加密的基础 也是选择 2 个素数 大致是您的私钥 并将它们相乘 大致是您的公钥 的基础 在我看来 如果您知道私钥 就可以生成公钥 这是正确的还是我弄错了什么 让我更困惑的是 不可能将
  • 动态重新加载 Cython 模块

    我正在尝试自动更新我的 python 程序即时使用的 Cython so 模块 下载新模块后del module and import modulePython 似乎仍在导入旧版本 From 这个问题 https stackoverflow
  • 如何从进程ID获取主窗口句柄?

    如何获得main来自进程 ID 的窗口句柄 我想把这个窗口放在前面 它在 Process Explorer 中运行良好 我检查了 NET 如何确定主窗口 我的发现表明它也使用EnumWindows 此代码应该以类似于 NET 的方式执行此操
  • GraphicsMagick:toBuffer() 流产生空缓冲区

    我正在尝试将文件读入缓冲区 调整其大小 然后使用以下示例代码将其写入磁盘 function processImage data gm data test jpg resize 300x300 background white flatten
  • 如何将实体框架设置为使用可选外键进行级联删除?

    我正在尝试将实体框架设置为使用可选外键在删除时级联 我首先使用代码 我的模型如下所示 public class Node Key public int ID get set ForeignKey Parent public int Pare
  • 写入 Python 子进程的标准输入,而无需communicate()的阻塞行为

    如何使其成为非阻塞调用 osd cat仅接受输入作为PIPE哪个需要p communicate 调用使进程阻塞 还有其他方法可以设置吗stdin in Popen p subprocess Popen osd cat d format in