Я пишу приложение GUI, которое регулярно извлекает данные через веб-соединение. Поскольку это извлечение занимает некоторое время, это приводит к тому, что пользовательский интерфейс не реагирует во время процесса поиска (его нельзя разделить на более мелкие части). Вот почему я хотел бы перенаправить веб-соединение на отдельный рабочий поток.
[Да, я знаю, теперь у меня две проблемы.]
В любом случае, приложение использует PyQt4, поэтому я хотел бы знать, какой лучший выбор: использовать потоки Qt или использовать модуль Python threading
? Каковы преимущества/недостатки каждого? Или у вас есть совершенно другое предложение?
Изменить (re bounty):. Хотя решение в моем конкретном случае, вероятно, будет использовать неблокирующий сетевой запрос, например Jeff Ober и Lukáš Lalinský (так что в основном оставляя проблемы concurrency для сетевой реализации), мне все же хотелось бы получить более подробный ответ на общий вопрос:
Каковы преимущества и недостатки использования потоков PyQt4 (т.е. Qt) поверх собственных потоков Python (из модуля threading
)?
Изменить 2: Спасибо всем за ответы. Несмотря на то, что нет 100% -ного соглашения, похоже, широко распространено мнение, что ответ "используется Qt", поскольку преимущество этого заключается в интеграции с остальной библиотекой, не создавая реальных недостатков.
Для тех, кто хочет выбрать между двумя реализациями потоковой передачи, я настоятельно рекомендую вам прочитать все ответы, представленные здесь, включая поток списков рассылки PyQt, к которому относятся abbot.
Было несколько ответов, которые я рассмотрел за щедрость; в конце концов я выбрал аббата для очень релевантной внешней ссылки; это был, однако, близкий звонок.
Еще раз спасибо.