使用PBS作业调度系统提交python脚本以及python调用R的方法

首先说下如何指定各种脚本的工作路径(shell, python, R)

  • qsub可以通過-d指定作業脚本運行目錄
  • R, python脚本:上一级调用时在命令行参数里指明运行路径

下面举例说明如何提交pythonCodePath/job.py(job.py里面还调用了)

  1. 通过qsub 提交路径为shellCodePath/job.sh的工作脚本,指明工作路径(也就是python脚本的工作路径)为workDirPython
qsub -d workDirPython shellCodePath/job.sh
  1. job.sh中调用python script
#!/bin/bash
#PBS -l nodes=1:ppn=6 
#PBS -q short
#PBS -V
python pythonCodePath/job.py `pwd`
python pythonCodePath/last.py

两点注意
pwd通过 -d workDirPython 指明
last.py是一个空脚本,用于处理python脚本在shell里没有执行的情况!(由于最后一句python脚本不被执行)

在python脚本中读取命令行参数也很简单

import sys
...
PATH_WORK = sys.argv[1] + "/"  # Gets working directory from command args
...
  1. 在python脚本里可以通过命令的方式调用R脚本,例如在job.py里面调用RCodePath/test.R,并指明test.R的工作路径为workDirR
import os
...
    command_R = "Rscript " + "RCodePath/test.R" \
                       + " " + workDirR
    os.system(command_R)
...

你可以指明任意多的参数

在R脚本里通过接受命令行参数得到运行环境

arguments = commandArgs(T)
path.working = arguments[1]
setwd(path.working)

你可能感兴趣的:(使用PBS作业调度系统提交python脚本以及python调用R的方法)