Всем доброго дня.
Хотел узнать, как правильно многопоточно программировать в Python. Мне необходимо параллельно запускать кучу тестов Selenium. Как я делаю сейчас - у меня есть отдельный скрипт, который принимает аргументы из sys.argv от программы вышестоящей(которая собирает Pool, делает map_async, и открывает через subprocess новый процесс интерпретатора Пайтона).
То есть схема примерно получается такая:
Основное приложение - Thread на вызов клиента - Pool - в одном потоке Пула вызывается subprocess - subprocess открывает новый интерпретатор Пайтона, который выполняет нужную мне программу.
Таким образом я могу запускать 100-200 тестов, перехватывать stdout и stderr программ-тестов, и вообще не особо париться. Но проблема только в том, что Pool как-то нестабильно работает. Допустим, у меня есть Pool на 100 потоков, есть инфа, 70к записей, по которой нужно сделать map, то есть передать параметры в реальный тест. Но иногда Pool зависает, не запускает больше потоков, либо держит включёнными только 2-3(может чуть больше), хотя в параметрах указано явно 100.
В общем хотел узнать, какой есть стабильный вариант многопоточного программирования в Python. И по тому что я сказал, мне нужна больше не функциональность многопоточного программирования, а уже видимо что-то типа nohup, но с контролем количества процессов.
Извиняюсь заранее за скомканное изложение, если что-то непонятно - пишите.
P.S. Прямой вызов функций из Pool я перестал юзать после того как неосилил исключения, которые вроде как и есть, но их не видно и вообще пофиг. С отдельным скриптом я многое сумел побороть, и это наиболее удобный для меня вариант получился.