Quote:
Originariamente inviato da cdimauro
Comunque su due piedi, potresti provare a leggere l'output subito dopo che hai lanciato il comando salloc?
Per adesso commenta tutte le altre righe, e vedi se riesci a intercettare l'output di salloc. Fatto questo, poi aggiungerai le rimanenti righe.
|
L'avevo già provato questo stratagemma ma non trovo l'output di salloc nel stdout del subprocesso. L'output di salloc, che presumo non venga da salloc in se, ma da un demone avviato da salloc, che è quindi un altro processo (che potrei definire il sub-subprocesso), me lo trovo invece nella console da cui lancio lo script python, è come se bypassasse il stdout del suprocesso.
Insomma, l'output del demone lanciato da salloc me lo becco direttamente nella shell più esterna e ignora la pipe del suprocesso (quello che ho chiamato "slurm").
Quote:
Originariamente inviato da cdimauro
Altra cosa, mi sembra che ci sia qualche funziona (o metodo di Popen, purtroppo non ricordo bene adesso) che ti consente di lanciare un comando e di recuperare l'output. Può darsi che sia sufficiente per quello che ti serve.
|
Si, è il communicate() se non sbaglio. Il comando ha però un "problema": trasferisce una stringa (il comando) e ne riceve l'output, ma poi killa il subprocesso. Infatti se lo uso, ottengo pure la notifica della revoca dell'allocazione (quando il subprocesso muore, il manager slurm considera terminato il job e lo chiude...). E invece a me serve tenere allocato il nodo del cluster per tempo indeterminato per eseguire un arbitrario numero di srun (per questo uso slurm.stdin.write(), che è un modo di comunicare un po' più "grezzo" ).
Una bella gatta da pelare eh?
Purtroppo è inerente la mia tesi di laurea per cui devo riuscirci in qualche modo! grazie per la risposta