繁体   English   中英

Python多重处理在本地运行的速度比在群集上运行的速度快(口齿不清)

[英]Python multiprocessing running faster locally than on cluster (slurm)

我有以下代码

import multiprocessing as mp
import os

def funct(name):
    if nameisvalid:
        do_some_stuff_and_save_a_file
        return 1
    else:
        return 0

num_proc = 20 #or a call to slurm/mp for number of processors
pool = mp.Pool(processes=num_proc)
results = pool.map_async(makeminofname, [n for n in nameindex])
pool.close()
pool.join()

我已经在具有num_proc=mp.cpu_count()的6核处理器的桌面上运行了该脚本,并且运行良好且速度很快,但是当我尝试在处理集群的sbatch脚本中使用-N 1运行该脚本时- n 20个 (我们的节点每个都有24个处理器)或任何数量的处理器,它运行速度非常慢,似乎只使用10-15个处理器。 有什么方法可以优化多重处理以使用Slurm吗?

funct检查磁盘上的特定文件,然后加载文件,然后工作,然后保存文件。 这导致我的各个进程正在等待输入/输出操作而不是工作。 因此,我在将所有初始数据传递到池之前加载了所有初始数据,并添加了一个来自multiprocessing Process ,该Process专用于将Queue中的文件放入其输出中的Queue中保存文件,因此,只有一个进程试图进行保存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM