Как ограничить количество активных потоков в Python?

Я новичок в Python и добился некоторого прогресса сthreading - Я занимаюсь конвертированием музыкальных файлов и хочу иметь возможность использовать несколько ядер на моей машине (один активный поток преобразования на ядро).

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()

Все работает, все файлы закодированы, браво! ... однако все процессы запускаются сразу, но я хочу запускать только два (по одному для каждого ядра). Как только один закончен, я хочу, чтобы он перешел к следующему в списке, пока он не закончился, а затем продолжил программу.

Как мне это сделать?

(Я посмотрел на пул потоков и функции очереди, но не могу найти простой ответ.)

Редактировать: возможно я должен добавить, что каждая из моих тем используетsubprocess.Popen запустить отдельную командную строкудекодер (flac) отправляется на стандартный вывод, который подается в командную строкукодировщик (Неточный / MP3).

Ответы на вопрос(6)

Ваш ответ на вопрос