0
输出我想捕捉这个过程被称为的输出与连续拍摄从subprocess.Popen
cmd = "doit input={input} conf={conf} output_dir={dir} gpu={gpu} --db-file .doit_gpu{gpu_id}.db".format(**kwargs)
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
不断。 该进程调用函数,将其结果作为字典字符串输出到控制台中。例如: -
{'subprocess_1': [<some data>]}
# then after some time
{'subprocess_2': [<some data>]}
# and some seconds later
{'subprocess_3': [<some data>]}
我希望能连续捕获输出,并立即把它重定向到另一个字典,我之前初始化。
process_table = {}
所以这是字典就怎么也得看起来像后的全过程完成:这里
process_table = {
{'subprocess_1': [<some data>]},
{'subprocess_2': [<some data>]},
{'subprocess_3': [<some data>]}
}
关键点(这就是为什么我似乎还没有找到任何相关的问题) process_table
应该在子流程完成后立即更新,不仅在整个流程完成后。这就是为什么这个答案here不够:
for line in process.stdout:
print("this is the output:", line,)
所以要清楚,你希望你的python脚本在等待每个子进程完成时阻塞,然后收集进程的stdout? – lancew
是的。但是当它打印到'stdout'时,我想捕获输出并将其重定向到变量'process_table'。我使用两个线程,一个运行'process'和一个读'process_table',并用它做一些事情。 – Victor