您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

控制使用python调用外部命令的子进程数

5b51 2022/1/14 8:22:51 python 字数 1798 阅读 560 来源 www.jb51.cc/python

我明白使用 subprocess是调用外部命令的首选方式. 但是,如果我想在parall中运行几个命令,但是限制生成的进程数量呢?令我困扰的是我无法阻止子进程.例如,如果我打电话 subprocess.Popen(cmd, stderr=outputfile, stdout=outputfile) 然后,进程将继续,而不用等待cmd完成.因此,我不能将其包装在多处理库的工作人员中. 例如,如果我这

概述

但是,如果我想在parall中运行几个命令,但是限制生成的进程数量呢?令我困扰的是我无法阻止子进程.例如,如果我打电话

subprocess.Popen(cmd,stderr=outputfile,stdout=outputfile)

然后,进程将继续,而不用等待cmd完成.因此,我不能将其包装在多处理库的工作人员中.

例如,如果我这样做:

def worker(cmd): 
    subprocess.Popen(cmd,stdout=outputfile);

pool = Pool( processes = 10 );
results =[pool.apply_async(worker,[cmd]) for cmd in cmd_list];
ans = [res.get() for res in results];

那么每个工作人员将在产生一个子进程后完成并返回.所以我不能真正限制使用Pool生成的进程数.

限制子流程数量的正确方法是什么?

您也可以在工作人员中调用Popen.wait方法

def worker(cmd): 
    p = subprocess.Popen(cmd,stdout=outputfile);
    p.wait()

总结

以上是编程之家为你收集整理的控制使用python调用外部命令的子进程数全部内容,希望文章能够帮你解决控制使用python调用外部命令的子进程数所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶