Come qualsiasi altro attributo di macchina, è sufficiente pubblicizzarlo nel classad della macchina e quindi richiedere che il lavoro lo richieda.
fargli pubblicità nel classad macchina, è possibile codificare in file di configurazione condor di ogni macchina con l'aggiunta di qualcosa di simile:
has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY
... o meglio ancora, si può dire Condor a scoprilo dinamicamente in runtime con uno script e pubblicizza il risultato tramite startd classad hook. Per fare questo, è necessario installare un semplice has_numpy
script su ogni macchina in questo modo:
#!/usr/bin/env python
try:
import numpy
except ImportError:
print "has_numpy = False"
else:
print "has_numpy = True"
... e poi dire Condor per eseguirlo ogni cinque minuti e bastone i risultati nella classad startd, aggiungendo quanto segue alla condor file di configurazione della macchina:
HASNUMPY = /usr/libexec/condor/has_numpy
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY)
STARTD_CRON_HASNUMPY_PERIOD = 300
... e poi ta-da (dopo un reconfig) le macchine in modo dinamico rilevare e segnalare se NumPy è installato e disponibile per gli script python.
Poi basta aggiungere un corrispondente obbligo di presentare il vostro lavoro di file, in questo modo:
Requirements = (has_numpy == True)
... e il vostro lavoro verrà eseguito solo su macchine in cui è installato NumPy.
Grazie per la risposta. Purtroppo il mio caso dimostra altri saggi. I lavori sono inviati a macchine diverse. Alcune presentazioni danno come risultato un ImportError di numpy. Ho ricontrollato queste macchine e non hanno avuto nessun numpy installato. Quindi il condor non sembra impedire l'invio di un lavoro a una macchina che non soddisfa i requisiti del lavoro - nel mio caso un'installazione numpy. Forse è il caso della nostra installazione di condor, però. Io stesso non ho impostato il sistema ed è la prima volta che lavoro con il condor. :-) – Aufwind
È ora di contattare gli sviluppatori del condor. O il loro manuale non è corretto, o Python è trattato in modo diverso come Java. –
Questa citazione dal manuale è fuori dal contesto. La funzione di chiamata del sistema remoto Condor è disponibile solo per i lavori di "universo standard".Sebbene non lo dica, l'OP deve usare l'universo "vanilla" perché l'universo standard impone vincoli che precludono agli interpreti come Python di correre sotto di esso. – Pinko