Смотрим модуль multiprocessing. Ага, круто, вроде всё что нужно есть! Куча примитивов для синхронизации между процессами. Хотя... если присмотреться поближе, окажется, что НИ ОДИН из них не работает для разных процессов. Только с дочерними процессами и только если дочерний процесс является прямым форком текущего (python -> сторонняя хрень -> python уже никак).
Смотрим модуль tempfile. Казалось бы, ну как тут можно налажать?! А вот как:
- Нет класса-обёртки для временных директорий.
- Нет возможности выключить автоудаление у NamedTemporaryFile. Создали файл, форкнулись (тем же multiprocessing.Process) и получили исключение на stderr, так как глупый питон пытался удалить один и тот же файл дважды.
ctypes.util.find_library() - замечательная функция! Только вот свои пути ей не подсунуть, да и в LD_LIBRARY_PATH она не может.
Ждать в одном потоке IO одновременно с нескольких источников? Или даже ещё и сигналы ждать одновременно с этим? Да не, ну кому такое может понадобиться? Ведь всегда можно на каждый чих наплодить по 100500 потоков =). Ивентлуп? Не, не слышали.