QThreadPool плюсы/минусы использования
Хочу реализовать поточность на PyQt5, потоки используются для долгих, но не затратных операций. прочитал много форумов, документации, вопросов, но не до конца понял что лучше использовать. Пытался реализовать треды:
- классированием от
QThread
и перопределениемrun
. - Классированием от
QObject
, определением методов иmoveToThread()
.
Оба способа удачно, но в них есть сови минусы.
Реализовал через QThreadPool
. Пока это выглядит как самый простой способ, позволяет буквально из любого места любую функцию (в том числе с параметрами) отправить в поток.
Но при этом сам объект QThreadPool
редко упоминается в вопросах про потоки, все советуют иные методы. Соответственно вопрос, почему так? Возможно я упускаю что-то очень важное, что повлияет на работу кода потом?
Ответы (1 шт):
Поискав больше форумов/документации, обнаружил что
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 без лишних телодвижений