python - 在多个处理器上运行外部应用程序
问题描述
目前我有一个subprocess.Popen
用于打开可执行文件并传递参数的程序 - 相当于./path/to/file args
在 Linux 上运行。
这工作得很好,但我必须执行这个文件超过 1000 次,目前它一次完成一个,在一个处理器上。例如,我希望能够以 8 个为一组执行此文件,因为我有一台 8 核 PC。
我尝试了以下方法:
bolsig = ("/home/rdoyle/TEST_PROC/BOLSIG/bolsigminus")
infile_list = glob.glob(str(cwd)+"/BOLSIG Run Files/run*")
cmds_list = [[bolsig, infile] for infile in infile_list]
procs_list = [Popen(cmd) for cmd in cmds_list]
for proc in procs_list:
proc.wait()
但这会尝试同时执行所有 1000 个命令。
有人有什么建议吗?
解决方案
您可以使用 Pythonmultiprocessing
模块及其multiprocessing.pool.Pool
-> https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing
推荐阅读
- asp.net-core-mvc - Identity.RoleManager 类型没有服务 - Identity.IdentityRole 已注册错误
- ansible - 使用 Ansible 删除配置文件中的确切行块
- rest - 如何使用外部 api 休息?
- c++ - 如何在 Ubuntu 中将内容从一个文件传输到另一个文件。?
- excel - How to insert a point in a txt file?
- python - Flask-sqlalchmey 行更新反映在 sqlite DB 中
- scala - SCALA 和弹性搜索:将符号添加到类路径(Databricks)
- cleartool - rmstream 的 CCRC 命令
- python-3.x - 如何获取键的索引?
- angular - How to make observable wait for the previous observable to complete