首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行python并行进程

运行python并行进程
EN

Stack Overflow用户
提问于 2019-09-24 06:14:20
回答 2查看 59关注 0票数 1

我有20多个独立的脚本需要执行,我不知道我可以并行执行多少个进程作为良好的实践:

代码语言:javascript
复制
import os
import glob
from multiprocessing import Pool

processos = (
    'p1.py',
    'p2.py',
    'p3.py',
    'p4.py',
    'p5.py',
    'p6.py',
    'p7.py',
    'p8.py',
    'p9.py',
    'p10.py',
    'p11.py',
    'p12.py',
    'p13.py',
    'p14.py',
    'p15.py',
    'p16.py',
    'p17.py',
    'p18.py',
    'p19.py',
    'p20.py',
    'p21.py',
    'p22.py',
    'p23.py',
    'p24.py'
)
def roda_processo(processo):                                                            
    os.system('python {}'.format(processo))


pool = Pool(processes=24)                                                        
pool.map(roda_processo, processos)

你想知道运行这些脚本的最有效的方法吗?

详细信息:这些进程将按计划运行。

EN

回答 2

Stack Overflow用户

发布于 2019-09-24 10:53:53

为什么不使用shell呢?

seq 1 24 | xargs -L1 -I{} -P`nproc` python p{}.py

代码语言:javascript
复制
 -P maxprocs
         Parallel mode: run at most maxprocs invocations of utility at
         once.

 nproc
          print the number of processing units available
票数 0
EN

Stack Overflow用户

发布于 2019-11-27 04:51:42

使用GNU并行,您可以做到:

代码语言:javascript
复制
parallel python ::: p*.py

它将为每个CPU线程派生一个进程。

如果您的进程只使用30%的CPU功率(例如,可能它在其余时间都在等待网络),那么生成3倍的CPU功率是有意义的:

代码语言:javascript
复制
parallel -j300% python ::: p*.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58070803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档