在 slurm 上使用 python 的多处理

2024-01-12

我正在尝试在 slurm 上运行一些并行代码,其中不同的进程不需要进行通信。我天真地使用了 python 的 slurm 包。然而,我似乎只在一个节点上使用CPU。

例如,如果我有 4 个节点,每个节点有 5 个 cpu,那么我只会同时运行 5 个进程。如何告诉多处理在不同节点上运行?

python 代码如下所示

import multiprocessing

def hello():
    print("Hello World")

pool = multiprocessing.Pool() 
jobs = [] 
for j in range(len(10)):
    p = multiprocessing.Process(target = run_rel)
    jobs.append(p)
    p.start() 

问题类似于this one https://stackoverflow.com/questions/32594734/slurm-multiprocessing-python-job,但还没有详细解决。


您当前的代码将在您启动它的单个节点上的 5 个处理器上运行 10 次。现在和SLURM没有任何关系了。

你不得不SBATCHSLURM 的脚本。

如果您想使用 SLURM 在 5 个核心上运行此脚本,请像这样修改脚本:

#!/usr/bin/python3

#SBATCH --output=wherever_you_want_to_store_the_output.log
#SBATCH --partition=whatever_the_name_of_your_SLURM_partition_is
#SBATCH -n 5 # 5 cores

import sys
import os
import multiprocessing

# Necessary to add cwd to path when script run
# by SLURM (since it executes a copy)
sys.path.append(os.getcwd())

def hello():
    print("Hello World")

pool = multiprocessing.Pool() 
jobs = [] 
for j in range(len(10)):
    p = multiprocessing.Process(target = run_rel)
    jobs.append(p)
    p.start() 

然后执行脚本

sbatch my_python_script.py

在安装 SLURM 的节点之一上

然而,这也会将您的作业分配给单个节点,因此速度将与您在单个节点上运行它的速度非常相同。

我不知道当你只有 5 个进程时为什么要在不同的节点上运行它。仅在一个节点上运行会更快。如果您在 python 脚本的开头分配超过 5 个核心,那么 SL​​URM 将为您分配更多节点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 slurm 上使用 python 的多处理 的相关文章

  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 将seaborn.palplot轴添加到现有图形中以可视化不同调色板

    将seaborn人物添加到子图中是usually https seaborn pydata org examples cubehelix palette html创建图形时通过传递 ax 来完成 例如 sns kdeplot x y cma
  • 在 keras 中保存和加载权重

    我试图从我训练过的模型中保存和加载权重 我用来保存模型的代码是 TensorBoard log dir output model fit generator image a b gen batch size steps per epoch
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 当数据库不是 Django 模型时,是否可以使用数据库中的表?

    是否可以从应用程序数据库中的表获取查询集 该表不是应用程序中的模型 如果我有一个不是名为 cartable 的模型的表 从概念上讲 我想这样做 myqueryset cartable objects all 有没有相对简单的方法来做到这一点
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk

随机推荐

  • 如何在 Objective-C 中监听网络端口

    我正在尝试为 iPhone 制作一个应用程序 可以侦听特定网络端口上的流量 我网络上的服务器正在特定端口上发送消息 服务器处理的设备的不同状态消息 我的问题是 当我创建一个线程并 makePairWithSocket 时 我会阻止其他想要向
  • Actionscript-3和其他语言中存在接口的原因是什么

    这个接口的意义是什么 即使我们在一个类上实现一个接口 每次在不同的类上实现它时 我们都必须一次又一次地声明它的功能 那么接口存在于as3或任何其他具有接口的语言上的原因是什么 谢谢 我基本上同意到目前为止发布的答案 只是补充一点 首先回答简
  • 按名称返回所有因子水平作为三列 data.table [R] 中的新列

    有什么办法使用 data table 或 dplyr 来解决以下问题 library data table DT data table a LETTERS c 1 1 3 8 b c 2 4 7 c as factor c bob mary
  • 解码嗅探到的数据包

    我知道每个数据包都有一些标头 看起来像是字符的随机组合 另一方面 内容本身可以是纯 ascii 格式 因此它可能是人类友好的 我嗅探到的一些数据包是可读的 当然是原始的 html 标头 但有些数据包看起来像这样 0000 00 15 af
  • 合并列数据框

    我有以下数据框 df1 startTimeIso endTimeIso id 2023 03 07T03 28 56 969000 2023 03 07T03 29 25 396000 5 2023 03 07T03 57 08 73400
  • 具有多处理功能的 Tensorflow2.x 自定义数据生成器

    我刚刚升级到tensorflow 2 3 我想制作自己的数据生成器用于训练 使用tensorflow 1 x 我这样做了 def get data generator test flag item list load item list t
  • ActiveRecord:保存多个对象时跳过验证

    我知道我可以跳过单个保存的验证 如下所示 User new name John save validate false 但是 当同时保存多个对象时 我该如何做到这一点呢 像这样 Category create name Apps name
  • 在android应用程序中使用MediaPlayer的正确方法

    抱歉我的英语 但我来自巴西 我使用谷歌翻译 好吧 我在这个应用程序中遇到了困难 我试图制作一个在线广播流媒体 在 2 2 版本中工作正常 但在 4 0 版本中不起作用 没有发生错误 只是不起作用 下面是我的代码 我很感激任何帮助 packa
  • React Native Redux - 对象不是构造函数(评估“new ctor(props context)”)

    这是一个非常简单的页面 正在尝试使用 Redux 请参阅下面的代码 但是我收到错误object is not a constructor evaluating new ctor props context import React Comp
  • 根据所选值更改文本

    我为每个 JavaScript 添加了一个带有文本的元素 有了这个代码 document ready function if welcome page length my element after tr td td td Welcome
  • SQLAlchemy Joinedload过滤列

    您好 我想使用 joinload 对我的查询进行过滤 但我似乎无法让它发挥作用 以下是我的示例查询 result session query Work options joinedload Work company users joined
  • 单个 @RestController 端点的自定义序列化

    有没有一种方法 最好是某种类型的注释 为单个端点注册自定义序列化器 RestController 延伸豆子并放置一个 JsonSerialize这将是一个选项 但这需要一个非常无用的新 bean 类 我尝试了以下方法 JsonSeriali
  • 如何从 google chrome 扩展程序获取 PDF 文件的 URL

    去年 我开发了一个可处理 PDF 文件的 Google 扩展 我使用以下函数来获取 PDF 文件的 URL function getPDFUrl String const e document body firstElementChild
  • R 中的 Vlookup 匹配函数

    我对 R 非常陌生 目前我正在将我对 R 的了解很少应用到我必须执行的工作分析工作中 我有两个数据框 数据框 A 由交易详细信息组成 而数据框 B 由各种货币的月收盘汇率组成 数据框A 交易详情 TRANSACTION ID COLLECT
  • 如何在 RecyclerView.Adapter 中使用共享首选项?

    如何在 RecyclerView Adapter 中使用共享首选项 我在 RecyclerView Adapter 中使用了共享首选项值 但是共享首选项中没有保存任何内容 我必须在 RecyclerView Adapter 或活动中使用共享
  • 您能否在 Ajax (XHR) 调用的服务器端处理过程中可靠地设置或删除 cookie?

    我自己对此做了一些测试 准确地说是在 DWR 框架 Ajax 请求处理程序的服务器端处理期间 看来您可以成功地操作 cookie 但这与我在 Ajax 最佳实践中阅读的很多内容相悖浏览器如何解释来自 XmlHttpRequest 的响应 注
  • 无边框 NSWindow 上的圆角

    我正在创建一个应用程序并且我不需要标题栏 http www usabilitypost com 2010 10 22 no title bar If the title remains the same all the time does
  • 在nodejs中使用断言模块?

    大家好 我正在阅读node官方文档 我看到了 Assert 模块 但不明白它的用法 到目前为止我的结论是就像某些语言的 try catch 示例官方文档不足以让我理解该模块 你们能帮助我吗 这些将用于单元测试 该模块用于为您的应用程序编写单
  • 为什么 PyQt5 项目每次都会收到警告“QStandardPaths: XDG_RUNTIME_DIR not set”

    我正在使用 python 3 6 2 和 Emacs 25 在 Ubuntu 中开发 PyQt5 项目 并且它以 root 权限运行 这工作正常 但我得到了 QStandardPaths XDG RUNTIME DIR not set de
  • 在 slurm 上使用 python 的多处理

    我正在尝试在 slurm 上运行一些并行代码 其中不同的进程不需要进行通信 我天真地使用了 python 的 slurm 包 然而 我似乎只在一个节点上使用CPU 例如 如果我有 4 个节点 每个节点有 5 个 cpu 那么我只会同时运行