等待子进程打印出一些东西到标准输出,与Popen



我想围绕现有程序做一个包装器,以创建一个可编程接口。这个想法是,我想公开将适当的输入发送到子进程的函数,并返回与该进程的输入相对应的值。

但是,我不知道如何让我的界面等待程序返回一些东西。

这就是我所做的。

class ProcessWrapper:
    def __init__(self, process):
        self.proc = process
    def communicate(self, message):
        self.proc.stdin.write(message)
        while True:
            result = self.proc.stdout.readlines()
            if result: return result

但这似乎对资源要求很高。有没有更好的方法?

readlines是一个非阻塞函数,这意味着循环将尽可能快地执行,而不是等待进程的某些输出。

这里应该用的是readline,本质上是相同的函数,但阻塞。

    def communicate(self, message):
        self.proc.stdin.send(message)
        return self.proc.stdout.readline()

最新更新