将Slurm帐户命令的输出捕获到Python Dictionary

发布于 2025-01-24 22:31:18 字数 1528 浏览 1 评论 0原文

我正在尝试捕获以下slurm的输出(

​-format =用户%10,Jobname%10,节点%10,start%10,End%10,经过%10,MAXRSS 输出以下输出:

                   User                  JobName                 NodeList                    Start                      End                  Elapsed     MaxRSS 

     user_name                    job10000000                machine00      2022-01-25T12:35:11      2022-01-25T12:36:02                 00:00:51            
                                    something                machine00      2022-01-25T12:35:11      2022-01-25T12:36:02                 00:00:51          0 
                                  job10000000                machine00      2022-01-25T12:35:12      2022-01-25T12:36:02                 00:00:50     24000K

使用Python进入字典中,我的代码如下:

slurm_cmd = 'sacct -a -j '+ str(job_id) + ' --format=user%10,jobname%10,node%10,start%10,end%10,elapsed%10,MaxRSS'
p = subprocess.Popen(slurm_cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = p.stdout.read().decode()
header, *data = output.splitlines()   
for datarow in data: 
    if data.index(datarow) == 1:
        dict_ = dict(zip(header.split(), datarow.split()))

我的期望是这样的:

dict_ = {
    "User" : 'user_name',
    "NodList": 'machine00',
    "Start" : '2022-01-25T12:35:12',
    "End"  : '2022-01-25T12:36:02',
    "Elapsed": '00:00:51',
    "MaxRSS"  : '24000K'
    }

有人这样做还是以前做过类似的事情?

I am trying to capture the output of the following slurm (https://hpc.nmsu.edu/onboarding/supercomputing/slurm/job-statistics/) command :

sacct -a -j <job_id> --format=user%10,jobname%10,node%10,start%10,end%10,elapsed%10,MaxRSS
that output this:

                   User                  JobName                 NodeList                    Start                      End                  Elapsed     MaxRSS 

     user_name                    job10000000                machine00      2022-01-25T12:35:11      2022-01-25T12:36:02                 00:00:51            
                                    something                machine00      2022-01-25T12:35:11      2022-01-25T12:36:02                 00:00:51          0 
                                  job10000000                machine00      2022-01-25T12:35:12      2022-01-25T12:36:02                 00:00:50     24000K

into a dictionary using python, my code is as following:

slurm_cmd = 'sacct -a -j '+ str(job_id) + ' --format=user%10,jobname%10,node%10,start%10,end%10,elapsed%10,MaxRSS'
p = subprocess.Popen(slurm_cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = p.stdout.read().decode()
header, *data = output.splitlines()   
for datarow in data: 
    if data.index(datarow) == 1:
        dict_ = dict(zip(header.split(), datarow.split()))

my expectation is something like this:

dict_ = {
    "User" : 'user_name',
    "NodList": 'machine00',
    "Start" : '2022-01-25T12:35:12',
    "End"  : '2022-01-25T12:36:02',
    "Elapsed": '00:00:51',
    "MaxRSS"  : '24000K'
    }

Does anyone did this or something similar before?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在风中等你 2025-01-31 22:31:18
header = output.splitlines()[0]
datarow = output.splitlines()[2]
dict_output = {k: v for k, v in zip(header.split(), datarow.split())}
header = output.splitlines()[0]
datarow = output.splitlines()[2]
dict_output = {k: v for k, v in zip(header.split(), datarow.split())}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文