Узкое место с числовым графическим интерфейсом - PullRequest
0 голосов
/ 12 марта 2011

Я создал графический интерфейс для настройки и запуска числового интегратора с использованием PyQT4, Wing, QT и Python 2.6.6 на моем Mac. Дело в том, что когда я запускаю интегратор из графического интерфейса, это занимает намного больше времени, чем когда я грубо запускаю интегратор из командной строки.

Например, 1000-летняя интеграция заняла 98 секунд в командной строке и ~ 570 секунд из графического интерфейса.

В графическом интерфейсе интеграция запускается из потока, а затем возвращается. Он использует очередь для связи обратно с графическим интерфейсом.

У кого-нибудь есть идеи относительно того, где находится узкое место? Я подозреваю, что другие могут испытывать что-то подобное только в меньшем масштабе.

t = threading.Thread(target=self.threadsafe_start_thread, args=(self.queue, self.selected))
t.start()

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Ваш код потока в основном код Python? Если да, то вы можете стать жертвой Глобальной блокировки интерпретаторов.

0 голосов
/ 12 марта 2011

В общем случае не рекомендуется использовать потоки Python в приложении Pyqt. Вместо этого используйте QThread .

И python, и QThreads вызывают одни и те же базовые механизмы, но они не очень хорошо играют вместе. Я не знаю, решит ли это вашу проблему или нет, но это может быть частью проблемы.

...