我需要一种简单的方法,使用多进程将子进程的stdout作为列表传递给另一个函数:
调用子进程的第一个函数:
def beginRecvTest():
command = ["receivetest","-f=/dev/pcan33"]
incoming = Popen(command, stdout = PIPE)
processing = iter(incoming.stdout.readline, "")
lines = list(processing)
return lines
应该收到lines
的函数:
def readByLine(lines):
i = 0
while (i < len(lines)):
system("clear")
if(lines[i][0].isdigit()):
line = lines[i].split()
dictAdd(line)
else:
next
print ; print "-" *80
for _i in mydict.keys():
printMsg(mydict, _i)
print "Keys: ", ; print mydict.keys()
print ; print "-" *80
sleep(0.3)
i += 1
和我的程序中的主要内容:
if __name__ == "__main__":
dataStream = beginRecvTest()
p = Process(target=dataStream)
reader = Process(target=readByLine, args=(dataStream,))
p.start()
reader.start()
我已经阅读了使用队列的信息,但我并不认为这正是我所需要的。
调用的子进程返回无限数据,因此有人建议使用tempfile,但我对如何执行此操作感到困惑。
目前脚本只返回读取的第一行,并且循环beginRecvTest()
函数的所有工作都已在编译错误中结束。