Python子进程:流入和流出

时间:2012-03-01 13:38:18

标签: python subprocess

我有一个用Python编写的服务器,它基本上接受来自客户端的传入连接,并将从它们接收的数据提供给子进程(每个连接一个实例),然后处理数据并将结果返回给服务器,以便它可以发送它回到客户端。

问题是数据正在流入,我需要能够执行多个读/写操作,而不会看到EOF。到目前为止,我一直无法提出一个解决方案,使我能够做到这一点,而不会在阅读时阻止我的服务器程序。有什么建议?感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用select.select(在Unix和Windows上可用)。

while True:
    rlist, wlist, xlist = select.select([client, proc.stdout], [], [])

select.select的调用将阻止,直到client套接字或proc.stdout准备好被读取。

rlist拥有[client.stdin, proc.stdout]的子集,可以随时阅读。

可以找到它的用法示例(虽然针对不同的问题)here

答案 1 :(得分:0)

听起来你必须建立一个UDP服务器和客户端。