Python: Есть ли способ запустить mainloop () в фоновом режиме? - PullRequest
2 голосов
/ 24 марта 2011

Есть ли способ запустить mainloop () в фоновом режиме?Я не хочу добавлять сложность потоков.Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 24 марта 2011

Нет.Основной цикл инфраструктуры GUI должен всегда выполняться на переднем плане.

2 голосов
/ 24 марта 2011

Нет, вы не можете этого сделать. Цикл сообщений работает в своем потоке и обрабатывает вашу очередь сообщений.

На самом деле нет никакого официального различия между фоновыми и передними потоками. Поток, обрабатывающий ваше сообщение, обычно называется передним планом, но на самом деле он ничем не отличается от любого другого потока. Это единственное соглашение, которое заставляет нас ссылаться на потоки переднего или заднего плана.

В конечном счете, основной поток с циклом сообщений имеет цикл сообщений в верхней части своего стека вызовов, и это именно так, как должно быть.

Можно запустить долгосрочную задачу и заставить ее часто обрабатывать сообщения, но этот способ требует глубокого понимания проблем повторного входа и часто приводит к безумию.

Если вы хотите долго выполнять фоновые задачи, вам, вероятно, нужны потоки.

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

Как насчет сохранения вашего цикла сообщений на переднем плане и вашей другой обработки на заднем плане (скажем, с после метода)? Особенно, если вы не хотите использовать темы. Тем не менее, я думаю, что потоки или процессы, вероятно, будут работать лучше в долгосрочной перспективе.

...