Будут ли основные функции в QGIS использовать многопоточность?


10

После прочтения Включение многопоточной обработки в QGIS? Мне было интересно, если QGIS 2.6 будет включать это при запуске различных процессов. Я проверил онлайн и смог найти только то, что многопоточный рендеринг был представлен в QGIS 2.4 (я полагаю, он снова будет доступен в 2.6). Теперь карты могут быть перерисованы очень быстро, особенно при работе с большими наборами данных.

Я читал, что довольно сложно включить многопоточность в основную функциональность и что пользователям рекомендуется манипулировать кодом Python для достижения этой цели, например, при распараллеливании операций ГИС в PyQGIS? ,

Я также проверил запрос функции, но он был закрыт в течение 9 месяцев Тимом Саттоном с последним комментарием:

«Я закрываю это - у Мартина Добиаса есть реализация в ветке, которая будет объединена после QGIS 2.2»

Будут ли некоторые функции в QGIS 2.6 использовать многопоточность (или она снова будет ориентирована на рендеринг), и если нет, то изменится ли это в QGIS 3.0?


Многопоточность не особенно подходит для большинства задач ГИС, которые, как правило, ориентированы на поток, просты и связаны с вводом / выводом. Сложность объединения результатов, как правило, не стоит усилий, чтобы поставить их в очередь (т. Е. Немедленно выполнить простую задачу). Поэтому определение «подвиг» является предметом значительных дискуссий.
Винс

@ Vince - Спасибо, я понимаю, что многопоточность не является главным приоритетом для многих вариантов использования. Но так как некоторая работа по достижению этого уже была проделана, мне было интересно, будет ли в новой версии QGIS поддержка (которая может быть лучше термина "эксплойт")
Джозеф

1
@PolyGeo - Спасибо, справедливо и вполне подходит для этого формата Q / A. Я согласен :)
Джозеф

Ответы:


3

Я думаю, что ответ на QGIS 3.0 можно найти в этом недавнем разговоре, опубликованном в Nabble :

Будет ли обработка в QGIS 3 поддерживать распараллеливание?

Цитирую Найла Доусона:

Если вы после распараллеливания в рамках одного алгоритма (например, буферизация объектов с использованием нескольких потоков), то я не знаю ни одного плана для этого.


Хорошая находка! Хотя меня немного смущает цитата, которая следует за тем, что вы цитировали: «Хороший и (теоретически) простой способ получить многопоточные алгоритмы, и было бы просто адаптировать многие существующие алгоритмы к этому (буфер, центроид, преобразование, преобразование, .... В основном все, что действует на каждую особенность в отдельности) . Насколько я понимаю, большинство алгоритмов в любом случае работают с каждой функцией индивидуально, потому что, если вы не выберете отдельные функции вручную, алгоритм автоматически обработает все из них?
Джозеф

Я думаю, что цитата, которую вы цитировали, касается возможности сделать редактирование непосредственно на слое (вместо создания нового вывода): фактически, в следующем он говорит о возможности выполнения операции буфера непосредственно на текущем слое, без дальнейшей обработки возвращаемого результата.
17

1
Хм, хорошая мысль. Я надеюсь, что разработчик QGIS также сможет прокомментировать и подтвердить это :)
Джозеф

2
GIS SE не является дискуссионным сайтом. Если вы хотите получить ответ от конкретного поставщика, я предлагаю вам запросить их напрямую.
Винс

1
@joseph Существует много алгоритмов (например, вычисление пересечений линий или растворение объектов), в которых нельзя работать с отдельными объектами.
Подземье

4

Рендеринг только в настоящее время (QGIS 2.6).

Мы с Мартином говорили о каком-то типичном API для многопоточных процессов, но в данный момент это просто разговоры.


1
Спасибо, Натан, лично ты считаешь, что это предприятие стоит того, чтобы заняться этим, или добавление / улучшение функциональности считается более приоритетным? Это просто из любопытства :)
Джозеф

Это стоит преследовать, но я не подозреваю, что это легкая задача.
Натан W
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.