2

大家好。我有一个Python文件(例如named: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. 如果我可以运行每一个核心的过程,时间设置1的运行将相等于一次运行时,我只是运行一个单独的进程:蟒蛇run.py设置1
+0

看看** GNU并行**。您可以轻松控制一次运行多少个进程,并生成参数的排列。在StackOverflow上搜索'[gnu-parallel]'并点击'newest'。 –

回答

0

你尝试使用multiprocessing模块?

假设你想在并行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)..] 
+0

谢谢,我会试试。但是如你所知,我不仅仅运行在一个文件上,而且还运行在许多独立的文件上。例如作业1的文件run1.py,作业2的run2.py ... –

相关问题