簡體   English   中英

運行 python 並行進程

[英]Run python parallel processes

我有 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)

您想知道運行這些腳本的最有效方法嗎?

詳細信息:這些進程將按計划運行。

為什么不使用 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

使用 GNU Parallel 你可以:

parallel python ::: p*.py

它將為每個 CPU 線程生成一個進程。

如果您的進程僅使用 30% 的 CPU 功率(例如,它可能正在等待網絡,當時的 rest)產生 3 倍的數量是有意義的:

parallel -j300% python ::: p*.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM