Tengo un script de python para ejecutar algunos comandos externos usando el módulo os.subprocess. Pero uno de estos pasos lleva mucho tiempo y me gustaría ejecutarlo por separado. Necesito lanzarlos, verificar que estén terminados y luego ejecutar el próximo comando que no sea paralelo. Mi código es algo como esto:Cómo ejecutar programas paralelos en python
nproc = 24
for i in xrange(nproc):
#Run program in parallel
#Combine files generated by the parallel step
for i in xrange(nproc):
handle = open('Niben_%s_structures' % (zfile_name), 'w')
for i in xrange(nproc):
for zline in open('Niben_%s_file%d_structures' % (zfile_name,i)):handle.write(zline)
handle.close()
#Run next step
cmd = 'bowtie-build -f Niben_%s_precursors.fa bowtie-index/Niben_%s_precursors' % (zfile_name,zfile_name)
Esto realmente no hace nada en paralelo, debido al bloqueo 'join()' (que impide que los otros subprocesos se inicien) hasta que termina el hilo. Vea mi respuesta para saber cómo solucionar esto. – pR0Ps