我想围绕现有程序做一个包装器,以创建一个可编程接口。这个想法是,我想公开将适当的输入发送到子进程的函数,并返回与该进程的输入相对应的值。
但是,我不知道如何让我的界面等待程序返回一些东西。
这就是我所做的。
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()