¿Cómo limito el número de hilos activos en python?

Soy nuevo en Python y estoy avanzando conthreading - Estoy haciendo una conversión de archivos de música y quiero poder utilizar los múltiples núcleos en mi máquina (un hilo de conversión activo por núcleo).

class EncodeThread(threading.Thread):
    # this is hacked together a bit, but should give you an idea
    def run(self):
        decode = subprocess.Popen(["flac","--decode","--stdout",self.src],
                            stdout=subprocess.PIPE)
        encode = subprocess.Popen(["lame","--quiet","-",self.dest],
                                stdin=decode.stdout)
        encode.communicate()

# some other code puts these threads with various src/dest pairs in a list

for proc in threads: # `threads` is my list of `threading.Thread` objects
    proc.start()

Todo funciona, todos los archivos se codifican, ¡bravo! ... sin embargo, todos los procesos se generan de inmediato, pero solo quiero ejecutar dos a la vez (uno para cada núcleo). Tan pronto como uno termine, quiero que pase al siguiente en la lista hasta que termine, luego continúe con el programa.

¿Cómo hago esto?

(He visto el conjunto de subprocesos y las funciones de la cola, pero no puedo encontrar una respuesta simple).

Editar: tal vez debería agregar que cada uno de mis hilos está usandosubprocess.Popen para ejecutar una línea de comandos separadadescifrador (flac) canalizado a la salida estándar que se alimenta a una línea de comandocodificador (lame / mp3).

Respuestas a la pregunta(6)

Su respuesta a la pregunta