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