首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定分配给作业的处理器数量

问确定分配给作业的处理器数量
EN

Stack Overflow用户
提问于 2019-05-23 10:28:17
回答 1查看 115关注 0票数 2

我正在尝试修改一个python程序,该程序将使用一个工作程序池在Linux hpc计算环境中执行任务。我希望将池中的工作线程数设置为等于我为作业请求的线程数。

multiprocessing.cup_count()和num_procs等命令返回64,这是一个节点上的线程数,但不是分配给我的作业的线程数。

我目前的解决方案是在批处理文件中grep指定线程数的命令,然后检查输出:

代码语言:javascript
复制
os.system('grep -i "batch -n" * > output')

file_ = open('output','r')
file_lines = file_.readlines()
file_.close()

for line in file_lines:
  elems = line.strip().split()
  if '-n' in elems:
    position = elems.index('-n')
    num_procs = elems[position+1]

不过,有没有更简洁、更直接的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2019-06-18 18:46:54

根据您使用的调度器,您可以从调度器中查询您的作业请求的核心数量。对于SGE - $NSLOTS;对于SLURM - $SLURM_CPUS_PER_TASK;对于PBS - $PBS_NP。

例如,对于SGE:

代码语言:javascript
复制
import os
#for SGE:
nslots = int(os.environ['NSLOTS']))

# for SLURM:
nslots = int(os.environ['SLURM_CPUS_PER_TASK']))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56267313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档