Как хранить локальные данные потока в PyQt? - PullRequest
2 голосов
/ 18 марта 2019

Как лучше всего хранить локальные данные потоков в приложении PyQt?

Мое приложение использует как QThread s, так и через некоторые зависимости также собственные нити Python (из модуля threading). Мой конкретный пример использования локального хранилища потоков в основном связан с первым.

Я вижу некоторые варианты.

  1. Использовать threading.local. При вызове из потока, чуждого threading, threading.current_thread() возвращает объект _DummyThread. AFAICT, threading.local поддерживает фиктивные нити, но кажется хрупким. В частности, поскольку DummyThread никогда не удаляется , хранилище не будет очищено при выходе из потока. Очевидно, я не хочу утечки памяти.

  2. Когда я знаю, что рассматриваемый код всегда будет выполняться в QThread, я мог бы просто сохранить данные непосредственно в объекте потока, полученном с помощью QThread::getCurrentThread(). Не знаю, что произойдет, если будет вызван из потока не из Qt.

  3. Есть ли в PyQt эквивалент QThreadStorage? В Qt это шаблон, а не класс, поэтому я не думаю, что он доступен в PyQt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...