Поэтому у меня есть пара вопросов:
- Это плохая идея выполнять вызовы DLL из нескольких модулей Python? Или это зависит от внутреннего устройства DLL? Я думал, что с точки зрения DLL потоки Python рассматриваются как единые агенты из-за GIL.
- Нужен ли каждому потоку Python, использующему эту DLL, насос сообщений?
- Вероятно, было бы неплохо хранить все взаимодействия с DLL в одном потоке. У меня возникают трудности с этим, поскольку я передаю управление циклу насоса сообщений в основном потоке. Мой наивный подход заключался бы в том, чтобы поместить новые исходящие сетевые сообщения, сгенерированные в моем рабочем потоке, в очередь Python, создать собственный цикл перекачки сообщений в основном потоке, который выполняет обработку событий Windows, но также контролирует мою очередь, и если есть сообщение, будет выполняться вызов DLL. Но все это выглядит довольно неуклюже и требует много работы для такой простой задачи. Правильный ли это подход?
- Есть ли другой способ поместить в цикл событий главного окна функцию, которая отслеживает ранее описанную очередь и принимает меры? Или мне следует углубиться в особенности .NET и начать использовать события или диспетчеры .NET?
Подробнее здесь: https://stackoverflow.com/questions/457 ... event-loop