正如您在下面看到的,我有两个并行运行的Popen对象,但在每个进程完成后,我希望使用从每个进程单独接收的数据执行一些后处理任务,但我希望后处理任务并行执行,但我在调用executor.map函数的那一刻就卡住了,我观察到CPU利用率达到100%有一段时间,后来下降了,但没有取得任何结果。 我被无限期地卡住了,进程继续运行。它甚至不在letsee内部打印
subProcess1 = Popen(cmd1, stdout=PIPE, stderr=PIPE, shell=True)
subProcess2 = Popen(cmd2, stdout=PIPE, stderr=PIPE, shell=True)
def letsSee(subProcessId):
print("Inside letsee")
while True:
stdoutVar = subProcessId.stdout.readline()
if stdoutVar == b'' and subProcessId.poll() is not None:
break
if stdoutVar:
print(subProcessId, type(stdoutVar), stdoutVar)
rc = subProcessId.poll()
return "Yes"
if __name__ == '__main__':
with concurrent.futures.ProcessPoolExecutor() as executor:
print("here")
xList = [subProcess1, subProcess2]
print(xList) #output is [<subprocess.Popen object at 0x01365290>, <subprocess.Popen object at 0x01365292>]
results = executor.map(letsSee, xList)
你能接受吗
相关问题 更多 >
编程相关推荐