我有20多个独立的脚本需要执行,我不知道我可以并行执行多少个进程作为良好的实践:
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)你想知道运行这些脚本的最有效的方法吗?
详细信息:这些进程将按计划运行。
发布于 2019-09-24 10:53:53
为什么不使用shell呢?
seq 1 24 | xargs -L1 -I{} -P`nproc` python p{}.py
-P maxprocs
Parallel mode: run at most maxprocs invocations of utility at
once.
nproc
print the number of processing units available发布于 2019-11-27 04:51:42
使用GNU并行,您可以做到:
parallel python ::: p*.py它将为每个CPU线程派生一个进程。
如果您的进程只使用30%的CPU功率(例如,可能它在其余时间都在等待网络),那么生成3倍的CPU功率是有意义的:
parallel -j300% python ::: p*.pyhttps://stackoverflow.com/questions/58070803
复制相似问题