服务器qsub 运行py文件,在通过qsub从Python提交的集群上运行作业。是否有意义?...

它是非常有意义的,虽然我会去另一个解决方案。

据我所知,你有程序#1,它决定你的50,000个文件中的哪一个需要由程序#2计算。 程序#1和#2都是用Python编写的。很棒的选择。

如果您运行的是相同的qsub系统,因为我有(不知道我们的叫法),您不能使用的命令参数提交的脚本。相反,任何选项都通过-v选项,将其放入环境变量,例如:

[[email protected] ~] $ python isprime.py 1

1: True

[[email protected] ~] $ head -n 5 isprime.py

#!/usr/bin/python

### This is a python script ...

import os

os.chdir(os.environ.get('PBS_O_WORKDIR','.'))

[[email protected] ~] $ qsub -v isprime='1 2 3' isprime.py

123456.cluster.control.com

[[email protected] ~]

这里,isprime.py可以使用​​处理命令行参数提交。然后,您只需检查脚本是否作为提交的作业运行,然后从环境变量(os.environ)中检索所述参数。

当程序#2被修改为在集群上运行,程序#1可以通过使用subprocess.call(['qsub','-v options=...','programme2.py'], shell=FALSE)

另一种方法是将队列中的所有文件在数据库中(比如说,一个SQLite数据库)提交作业。然后,您可以让程序#1检查数据库中所有未处理的条目,确定结果(运行,不运行,使用特殊选项运行)。 您现在有机会在群集上并行运行程序#2,该程序仅检查数据库以分析要分析的文件。

编辑:当程序#2是一个可执行

取而代之的是python脚本,我们使用一个bash脚本,它的环境变量,并把他们的程序的命令行:

#!/bin/bash

cd .

# put options into context/flags etc.

if [ -n $option1 ]; then _opt1="--opt1 $option1"; fi

# we can even define our own defaults

_opt2='--no-verbose'

if [ -n $opt2 ]; then _opt2="-o $opt2"; fi

/path/to/exe $_opt1 $opt2

如果您正在寻找数据库解决方案,则需要一个python脚本来检查数据库中未处理的文件,将文件标记为正在处理(在单个事务中执行这些操作),获取选项,完成后调用可执行文件subprocess,将文件标记为完成,检查新文件等c。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值