我需要更大的灵活性,所以我在这里为此和其他目的构建了一个 Python 模块。您可以直接将模块作为脚本 ( python qsub.py
) 运行以进行演示。
用法:
$ git clone https://github.com/stevekm/util.git
$ cd util
$ python
Python 2.7.3 (default, Mar 29 2013, 16:50:34)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import qsub
>>> job = qsub.submit(command = 'echo foo; sleep 60', print_verbose = True)
qsub command is:
qsub -j y -N "python" -o :"/home/util/" -e :"/home/util/" <<E0F
set -x
echo foo; sleep 60
set +x
E0F
>>> qsub.monitor_jobs(jobs = [job], print_verbose = True)
Monitoring jobs for completion. Number of jobs in queue: 1
Number of jobs in queue: 0
No jobs remaining in the job queue
([Job(id = 4112505, name = python, log_dir = None)], [])
使用 Python 2.7 和 SGE 设计,因为我们的系统就是这样运行的。唯一需要的非标准 Python 库是包含的tools.py
和log.py
模块,以及sh.py(也包括在内)
如果您希望纯粹留在 . 显然没有那么有用bash
,但是如果您需要等待qsub
工作,那么我会想象您的工作流程正逐渐变得复杂,这将受益于使用 Python。