如何在 python 和输出脚本中获取神鹰作业编号?

How do I get the condor job number in python and to the output script?

我想要两件事:

  1. python
  2. 中的职位编号
  3. 在输出文件中输入。

我的提交脚本看起来像这样:

####################
#
# Simple HTCondor submit description file
#
####################

Executable = test_condor.py
Log          = condor_job_log.out
Output       = condor_job_stdout.out
Error        = condor_job_stdout.out
# Use this to make sure 1 gpu is available. The key words are case insensitive. 
REquest_gpus = 1
# Note: to use multiple CPUs instead of the default (one CPU), use request_cpus as well
Request_cpus = 4
# E-mail option
Notify_user = me@gmail.com

# "Queue" means add the setup until this line to the queue (needs to be at the end of script).
Queue

我希望输出文件附加作业编号,例如:

Log          = condor_job_log{$JOB_ID}.out

我尝试通过打印 python 中的所有环境变量来查找环境名称,但没有帮助:

 os.environ = environ({'_CONDOR_ANCESTOR_2148': '3092:1586844319:3811816668', '_CONDOR_ANCESTOR_18122': '18123:1588528659:3276981140', '_CONDOR_ANCESTOR_3092': '18122:1588528659:978447114', 'TEMP': '/srv/condor/execute/dir_18122', '_CONDOR_SCRATCH_DIR': '/srv/condor/execute/dir_18122', '_CONDOR_SLOT': 'slot1_4', 'BATCH_SYSTEM': 'HTCondor', 'TMPDIR': '/srv/condor/execute/dir_18122', '_CONDOR_CHIRP_CONFIG': '/srv/condor/execute/dir_18122/.chirp.config', '_CONDOR_JOB_PIDS': '', 'TMP': '/srv/condor/execute/dir_18122', 'OMP_NUM_THREADS': '4', '_CONDOR_AssignedGPUs': 'CUDA1', '_CONDOR_JOB_AD': '/srv/condor/execute/dir_18122/.job.ad', 'CUDA_VISIBLE_DEVICES': '1', '_CONDOR_JOB_IWD': '/home/me/repo/repo-proj/code', '_CHIRP_DELAYED_UPDATE_PREFIX': 'Chirp', 'GPU_DEVICE_ORDINAL': '1', '_CONDOR_MACHINE_AD': '/srv/condor/execute/dir_18122/.machine.ad'})

因为职位编号应该是其他形式,例如:

Submitting job(s).
1 job(s) submitted to cluster 11011.

我尝试在 中搜索该号码,但没有成功。所以我无法从 python 获取它...那么我如何获取它?


这没有帮助:https://www-auth.cs.wisc.edu/lists/htcondor-users/2005-February/msg00202.shtml

因为我不知道什么是标准的 no env 变量,但是预定义的宏还有另一种方法

将其包含在环境中(例如) environment = CONDOR_ID=$(Cluster).$(Process)` 的意思。我是否在我的提交脚本中这样做?但是我的提交脚本是 python 脚本...我很困惑。我尝试查看所有环境变量名称,但没有任何符合我预期的名称。

如果您想要输出文件的 name 中的作业 ID,请尝试

output = my_job_$(CLUSTER).out

请注意,condor 作业 ID 有两部分,"cluster" 和 "proc"。如果您只是以

结束提交文件,则 proc 始终为 0
queue

声明。如果您使用

每个集群提交多个 proc
queue 100

然后 procs 将从 0 变为 99。

在那种情况下,您可能希望将集群和过程放入文件名中,例如

output = my_job_$(CLUSTER).$(PROCESS).out

将集群 ID 获取到环境中并不难,假设您希望在环境变量中包含它 MY_JOB_ID。然后你可以添加到提交文件(队列语句之前)

environment = MY_JOB_ID = $(CLUSTER)

然后您的 python 脚本将在名为 MY_JOB_ID

的环境变量中看到集群 ID