Панель ноутбука wxpython зависает при работе потоков

Я пытаюсь разработать графический интерфейс с использованием wxpython, который имеет 3-4 панели ноутбука, и одна из этих панелей (главная панель) вызывает другой скрипт на языке python, называемый abc.py. В этом abc.py я запускаю несколько (>10) потоков одновременно. Когда я нажимаю кнопку запуска на главной панели, она запускает эти одновременные потоки скрипта abc.py. Проблема, с которой я здесь сталкиваюсь, заключается в том, что мой блокнот wxpython зависает на время между: "когда я нажимаю кнопку запуска и до всех потоков соединяются". В течение этого периода я не могу управлять другими кнопками на панели и не могу переключаться между панелями. Мое окно замораживается на этот период времени. В чем может быть проблема? Если кто-то может направить меня на правильный путь, чтобы избежать этой проблемы, то я буду очень благодарен. Спасибо..!!!

1 ответ

Решение

Вам также нужно будет обернуть звонок abc.pypopen, Я полагаю) в поток, иначе графический интерфейс будет блокироваться. Когда процесс во внешнем скрипте собирает свой ответ, вы должны вернуть его потокобезопасным способом (важно!), Чтобы wxPython,

Лучшим способом было бы импортировать из abc.py, если это возможно, и раскрутите импортированные объекты в длительном потоке.

Для объяснения того, как общаться обратно в поточно-безопасном режиме, смотрите wxPython wiki. Я лично считаю последний пример наиболее простым для понимания и реализации.

Другие вопросы по тегам