栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在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
接受一行并返回(可能已修改)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号