QThreadPool плюсы/минусы использования

Хочу реализовать поточность на PyQt5, потоки используются для долгих, но не затратных операций. прочитал много форумов, документации, вопросов, но не до конца понял что лучше использовать. Пытался реализовать треды:

  1. классированием от QThread и перопределением run.
  2. Классированием от QObject, определением методов и moveToThread().

Оба способа удачно, но в них есть сови минусы.

Реализовал через QThreadPool. Пока это выглядит как самый простой способ, позволяет буквально из любого места любую функцию (в том числе с параметрами) отправить в поток.

Но при этом сам объект QThreadPool редко упоминается в вопросах про потоки, все советуют иные методы. Соответственно вопрос, почему так? Возможно я упускаю что-то очень важное, что повлияет на работу кода потом?


Ответы (1 шт):

Автор решения: Dezmonder

Поискав больше форумов/документации, обнаружил что

Great news! The latest versions of PyQt (5.15.0) and PySide (6.2.0) have enhanced the QThreadPool's .start() method to allow the execution of Python functions, methods, or PyQt/PySide slots directly, without the need for creating QRunnable objects. This improvement makes it simpler to run Python code in the background and avoid the complexities of managing QRunnable instances for each task.

Так что действительно, для последних версий PyQt можно создавать потоки через QThreadPool без лишних телодвижений

→ Ссылка