Текущая практика использования QThreads: рассмотрение QThreads как транспорта, а не контейнера [закрыто]Python

Программы на Python
Ответить
Anonymous
 Текущая практика использования QThreads: рассмотрение QThreads как транспорта, а не контейнера [закрыто]

Сообщение Anonymous »

Я изучал различные способы использования QThreads в приложениях PyQt. На данный момент я столкнулся с двумя основными подходами:
  • Создание подкласса QThread: написание логики непосредственно внутри QThread подкласс.
  • Создание подкласса QObject и использование moveToThread: инкапсуляция логики в QObject и использование QThread для его запуска.
Как новичку в разработке через тестирование (TDD), мне было очень сложно тестировать логику при использовании QThread, особенно когда логика тесно связана с самим потоком. Вот некоторые проблемы, с которыми я столкнулся:
  • Создать надежную настройку и демонтаж потоков в тестах сложно, поскольку это требует тщательного жизненного цикла. управление.
  • Отладка ошибок в многопоточной логике затруднительна, а некоторые ошибки являются критическими, но их трудно воспроизвести.
  • Трудно проверить, является ли логика фактически выполняется в предполагаемом изолированном потоке или по ошибке в основном потоке.
Вопрос
Как лучше всего использовать QThreads в современных приложениях PyQt? Как я могу спроектировать свой код таким образом, чтобы:
  • отличал бизнес-логику от потоков?
  • упрощал логику тестировать изолированно (не полагаясь на потоки во время тестирования)?
  • Соответствует современным шаблонам проектирования при разработке PyQt?


Подробнее здесь: https://stackoverflow.com/questions/792 ... not-a-cont
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»