我有一个使用子进程执行命令的方法, 我想打电话给那个方法" n"没有时间等待所有" n"子进程完成 例如:
import subprocess
class mysubprocess():
def child_process(self,directory):
self.process=subprocess.Popen('ls',cwd=directory)
def execute(self):
directory=['/home/suresh/Documents','/home/suresh/Downloads']
for i in directory:
print(i)
self.child_process(directory)
self.process.wait()
def main():
myobject=mysubprocess()
myobject.execute()
if __name__=='main':
main()
答案 0 :(得分:1)
您需要存储对Popen
个对象的引用,以便稍后调用它们wait
methods。
(问题中的代码用最后一个Popen
对象覆盖Popen
对象,并仅等待最后一个子进程。)
import subprocess
class mysubprocess():
def execute(self, directory_list):
procs = []
for d in directory:
print(d)
procs.append(subprocess.Popen('ls', cwd=d)) # <---
for proc in procs:
proc.wait()
def main():
myobject = mysubprocess()
myobject.execute(['/home/suresh/Documents','/home/suresh/Downloads'])
if __name__ == '__main__':
main()
其他问题
directory
)而不是项目。if
语句应将__name__
与'__main__'
进行比较。