如何编写脚本以在多核机器中有效地运行多进程



everyone.我有一个文件Python(例如命名:run.py(。该程序接受一些参数(python run.py param1 param2 ...(,每个元组参数都是一个设置。现在,我必须同时运行许多设置才能尽快完成所有设置。我写了一个文件 run.sh 如下:

python run.py setting1 &
python run.py setting2 &
#more setting
...
wait

此文件将同时执行所有进程,对吗?我在机器上运行 64 核 CPU。我在这里有一些问题:

  1. 每个进程是否会在一个内核上运行?
  2. 如果没有,我该怎么做?
  3. 如果我可以每个内核运行一个进程,则 setting1 的运行时间将等于我只运行单个进程时运行的时间:python run.py set1

您是否尝试使用多处理模块?

假设你想并行执行某个函数work(arg1, arg2)多次,你最终会得到这样的东西

import multiprocessing
p = multiprocessing.Pool(multiprocessing.cpu_count()
results = p.starmap(work, [(arg11, arg12), (arg21, arg22)....]
# do something with the list of results

如果你的函数看起来彼此非常不同,那么你可以通过编写一个函数包装器来摆脱困境,如下所示:

def wrapper(dict_args, inner_function):
return inner_function(dict_args)
# then launch the multiprocessing mapping
p.starmap(wrapper, [({'arg1': v1, 'arg2': v2}, job1), ({'foo': bar}, job2)..]

相关内容

  • 没有找到相关文章