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

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


person Bhoomika Sheth    schedule 17.02.2015    source источник


Ответы (1)


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

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

Объяснение того, как обеспечить поточное взаимодействие, см. в вики wxPython. Лично я считаю последний пример самым простым для понимания и реализации.

person nepix32    schedule 17.02.2015