artemgapchenko
@artemgapchenko

Параллельное выполнение потоков в PySide?

Всем привет.

Для курсовой работы пишу приложение, которое, грубо говоря, должно высчитывать каждое следующее состояние клеточного автомата и время от времени выводить его на экран. Решил расчеты распараллелить — создал свой класс MyThread, унаследовал его от QRunnable. Создал массив из двух объектов класса MyThread и время от времени запускаю их на выполнение таким вот образом:

for w in self.__workers:
    QtCore.QThreadPool.globalInstance().start(w)
QtCore.QThreadPool.globalInstance().waitForDone()


Посмотрел в диспетчер задач, и увидел, что как было одно ядро занято задачей, так оно одним и осталось. Подумал, что это может быть связано с количеством потоков в пуле, решил увеличить их число до трех (один поток — главный, два других — MyThread'ы).

QtCore.QThreadPool.globalInstance().setMaxThreadCount(3)


Никаких перемен.

Я где-то что-то не так делаю, но понять что и где не могу. Может быть кто-нибудь сталкивался с задачей написания приложения на PySide, которое должно было работать хотя бы на двух ядрах? Есть идеи, что я делаю неправильно?
  • Вопрос задан
  • 3014 просмотров
Решения вопроса 1
mik_os
@mik_os
Python использует GIL (link). Простыми словами: в любой момент времени исполняется только 1 кусок python-кода. Для загрузки все ядер используйте multiprocessing.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы