我有一个称为exectuable的pyside应用程序。我想在n个进程中异步运行这个可执行文件,并在QTextEdit中捕获每个进程的输出。
目前我有:
def run(self, args, worklist):
self.viewer = OutputDialog(self)
self.procs = []
for path in worklist:
final_args = args + path
p = QtCore.QProcess(self)
p.readyReadStandardOutput.connect(self.write_process_output)
self.procs.append(p)
p.start(self.exe, final_args)
def write_process_output(self):
for p in self.procs:
self.viewer.text_edit.append(p.readAllStandardOutput())
每次进程发送'ready'信号时,它都过于笨重,它会尝试获取所有进程的输出。
如何仅为发送信号的过程获取输出?
答案 0 :(得分:2)
使用lambda
连接信号,以便将相关进程传递到插槽:
p.readyReadStandardOutput.connect(
lambda process=p: self.write_process_output(process))
def write_process_output(self, process):
self.viewer.text_edit.append(process.readAllStandardOutput())