【问题标题】:Reading asynchronously from stdin and spawning processes as a result using Twisted使用 Twisted 从标准输入异步读取并生成进程
【发布时间】:2014-08-11 18:54:45
【问题描述】:

我正在尝试编写一个模块,该模块使用管道(绑定到stdin)从进程异步获取发送数据,然后需要生成和管理与接收到的数据相对应的进程(即这将是一个回调函数)。

所以我想知道 Twisted 是否可以轻松完成这两项任务(从标准输入异步读取、生成和管理子进程),或者是否有使用其他工具的更好/更优雅的解决方案。

【问题讨论】:

  • Twisted 有办法做到这一点,许多其他 Python 库(asyncio/trollius、tornado 等)也是如此。你甚至可以在没有任何异步框架的情况下毫不费力地做到这一点。至于哪种方式最好/最优雅,这确实是一个基于意见的问题,IMO。
  • 你能推荐/建议一个优雅而简单的吗?
  • 我对 Twisted 的经验很少,但它很受欢迎。它可能会很好地满足您的需求。如果您使用的是 Python 3.4,标准库中的 asyncio 模块也可以以简单而优雅的方式完成此操作。

标签: python asynchronous subprocess twisted nonblocking


【解决方案1】:

这两项任务在 Twisted 中都很容易完成,而且同样重要:它具有跨多个平台的强大支持。

关于第一个任务(通过标准输入进行较长时间的交谈),请参阅here

关于第二个任务(生成进程,获取输出,完成):这本质上是 Twisted 中的 1 行,请参阅 here

【讨论】:

    最近更新 更多