如何在Python 2.7中线程化多个子流程实例?

如何在Python 2.7中线程化多个子流程实例?,第1张

如何在Python 2.7中线程化多个子流程实例

模拟:

echo foo |firstCommand - | somePythonRoutine - |secondCommand - | anotherPythonRoutine - |thirdCommand - > finalOutput

您当前使用线程的方法有效:

from subprocess import Popen, PIPEfirst = Popen(["firstCommand", "-"], stdin=PIPE, stdout=PIPE, bufsize=1)second = Popen(["secondCommand", "-"], stdin=PIPE, stdout=PIPE, bufsize=1)bind(first.stdout, second.stdin, somePythonRoutine)with open("finalOutput", "wb") as file:    third = Popen(["thirdCommand", "-"], stdin=PIPE, stdout=file, bufsize=1)bind(second.stdout, third.stdin, anotherPythonRoutine)# provide input for the pipelinefirst.stdin.write(b"foo")first.stdin.close()# wait for it to completepipestatus = [p.wait() for p in [first, second, third]]

每个都

bind()
启动一个新线程:

from threading import Threaddef bind(input_pipe, output_pipe, line_filter):    def f():        try: for line in iter(input_pipe.readline, b''):     line = line_filter(line)     if line:         output_pipe.write(line) # no flush unless newline present        finally: try:     output_pipe.close() finally:     input_pipe.close()    t = Thread(target=f)    t.daemon = True # die if the program exits    t.start()

somePythonRoutine
anotherPythonRoutine
接受一行并返回(可能已修改)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5667430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存