Pytonic在进程之间传递值的方法

时间:2015-02-06 10:27:34

标签: python linux subprocess multiprocess

我需要一种简单的方法,使用多进程将子进程的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()函数的所有工作都已在编译错误中结束。

0 个答案:

没有答案
相关问题