Это не совсем ответ на ваш вопрос, но вы можете использовать отдельные процессы вместо потоков, тогда проблемы должны исчезнуть.
Плюсы:
- Нет необходимости взламывать Python (и убедиться, что результат работает во всех предполагаемых случаях)
- Вероятно, меньше усилий по разработке в целом
- Простое обновление до новых версий Python
- Четко определенные интерфейсы между различными процессами, что упрощает получение правильных данных и отладку
Минусы:
Если вы используете разделяемую память для IPC, ваш результирующий код приложения не должен сильно отличаться от того, что вы получите с потоками.
Учитывая, что некоторые люди утверждают, что вы всегда должны использовать процессы над потоками , я бы, по крайней мере, рассмотрел его как альтернативу, если он как-то соответствует вашим ограничениям.