Как и любой другой атрибут машины, вам просто нужно объявить его в классе машины, а затем сделать так, чтобы ваши задания потребовали его.
Чтобы рекламировать его в классе машины, вы можете либо жестко закодировать его вКонфигурационный файл каждой машины condor, добавив что-то вроде этого:
has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY
... или, что еще лучше, вы можете указать Condor динамически обнаруживать его во время выполнения с помощью сценария и объявить результат с помощью startdкрюк класса .Чтобы сделать это, установите простой сценарий has_numpy
на каждой машине, например:
#!/usr/bin/env python
try:
import numpy
except ImportError:
print "has_numpy = False"
else:
print "has_numpy = True"
..., а затем скажите Condor запускать его каждые пять минут и вставлять результаты в класс startd, добавляяв конфигурационном файле машины:
HASNUMPY = /usr/libexec/condor/has_numpy
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY)
STARTD_CRON_HASNUMPY_PERIOD = 300
... и затем (после перенастройки) ваши машины будут динамически определять и сообщать, установлена ли numpy и доступна ли она для сценариев Python.
Тогда вам просто нужно добавить соответствующее требование к файлам отправки задания, например:
Requirements = (has_numpy == True)
... и ваша работа будет выполняться только на машинах, на которых установлена numpy.