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