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