Я пишу приложение с графическим интерфейсом, которое регулярно извлекает данные через веб-соединение. Поскольку это извлечение занимает некоторое время, это приводит к тому, что пользовательский интерфейс не отвечает во время процесса извлечения (его нельзя разделить на более мелкие части). Вот почему я хотел бы передать веб-соединение отдельному рабочему потоку.
[Да, я знаю, теперь у меня две проблемы .]
В любом случае, приложение использует PyQt4, поэтому я хотел бы знать, что лучше: использовать потоки Qt или использовать threading
модуль Python ? Каковы преимущества / недостатки каждого? Или у вас есть совсем другое предложение?
Изменить (повторное вознаграждение): хотя решение в моем конкретном случае, вероятно, будет использовать неблокирующий сетевой запрос, как предложили Джефф Обер и Лукаш Лалински (так что в основном оставляя проблемы параллелизма для сетевой реализации), я все же хотел бы больше подробный ответ на общий вопрос:
Каковы преимущества и недостатки использования потоков PyQt4 (т.е. Qt) над собственными потоками Python (из threading
модуля)?
Изменить 2: Спасибо всем за ответы. Хотя нет 100% согласия, похоже, существует широко распространенное мнение, что ответ - «используйте Qt», поскольку преимуществом этого является интеграция с остальной частью библиотеки, при этом не вызывая реальных недостатков.
Для тех, кто хочет выбрать между двумя реализациями потоков, я настоятельно рекомендую прочитать все ответы, представленные здесь, включая ветку списка рассылки PyQt, на которую ссылается аббат .
Я подумал о нескольких ответах на награду; в конце концов, я выбрал аббата для очень релевантной внешней ссылки; Однако это был серьезный вызов.
Еще раз спасибо.