管道的Python语言支持

时间:2011-12-30 15:13:12

标签: python multiprocessing pipe

我想在python中实现这样的东西:

def producer():
    while True:
        sys.stdout.write("this is my data\n")

def consumer():
    while True:
        data = sys.stdin.read()
        print data

producer | consumer

管道实际上需要创建两个进程,连接stdout和stdin,然后运行它们直到两个进程终止。

在python中是否有语法支持,就像shell一样,或者我是否需要递归到Popen对象?

Popen而言最简单的实现是什么?

有人可以提供一个可以用来实现这种管道模式的泛型类吗?该课程的签名类似于:

Class Pipe:

    def __init__(self, process1, process2, ...):

因此,在我的情况下,可以按如下方式使用:

mypipe = Pipe(producer, consumer)

2 个答案:

答案 0 :(得分:2)

您可以使用pipes模块:

  

管道模块定义了一个类来抽象管道的概念 - 从一个文件到另一个文件的转换器序列。

当然,语法与shell管道不一样,但为什么要重新发明轮子?

答案 1 :(得分:1)

你可能会想到 coroutines 。请查看David Beazley的very interesting presentation