Python: imprime "Trabajos finalizados" solo cuando se hayan completado todos los bjobs

CorePress2024-01-24  12

Tengo un script en Python que envía múltiples trabajos usando bjobs. A continuación se muestra el fragmento de código

 for jobs in job_list:
    i=0
    os.system("bsub -J JOB_{} jobs".format(str(i))
    i+=1

Quiero imprimir "Ejecución finalizada" sólo cuando todos los trabajos se hayan completado. ¿Cómo puedo hacer lo mismo?



------------------------------------

Necesitará obtener el resultado de cada trabajo, por lo tanto, utilice el módulo de subproceso.

Si llama a cada trabajo en un hilo separado, puede usar una lista compartida para guardar el resultado de cada trabajo, de modo que cuando todo esté terminado, esta lista tendrá el mismo tamaño que la lista de trabajos, luego podrá imprimir. el mensaje adecuado.

pero si el código es solo el fragmento anterior, puedes hacerloesto:

for index, job in enumerate(job_list):
    result = subprocess.call(f"bsub -J JOB_{index} jobs")
print("Finished runnning")

3

¿Qué sucede si quiero esperar a que se completen todos los trabajos y luego continuar con el script restante?

- Astro

28 de marzo de 2021 a las 8:44

Edité mi respuesta, el método de llamada está bloqueado, por lo que no continuará hasta que finalice el subproceso actual. el resultado será el retorno del subprocesocódigo, puede utilizarlo como comprobaciones adicionales. Encontrarás más detalles aquí: subprocess.call

- Deadpool

28/03/2021 a las 17:09

guau, gracias, eso es lo que quería hasta ahora

- roozbeh sharifnasab

28/03/2021 a las 21:18



------------------------------------

No estoy seguro... ¡¡pero prueba esto!!

counter = 0
for jobs in job_list:
    counter +=1
    i=0
    os.system("bsub -J JOB_{} jobs".format(str(i))
    i+=1
    if len(job_list) <= counter:
        print("Completed")
'''

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare