Увімкнення багатопотокової обробки в QGIS?


11

Я знайшов кілька посилань, які, по всій видимості, говорять про те, що це існує в QGIS 2.2, але, здається, він використовує лише одне ядро ​​на повну потужність.

Це працює на Ubuntu 14.04

Поточний процес - це створення великої кількості регулярних балів. Як я можу змусити цей процес використовувати більше, ніж одне ядро?

Використання процесора


1
Я думаю, це буде в 2.4, наступний реліз. Однак якщо ви хочете спробувати це, завантажте нічну збірку.
Метт

Напевно, варто прокоментувати, що завдяки GIL "багатопотоковість" не запустить одночасні ядра. Перевірте stackoverflow.com/questions/1294382/… Те, що ви хочете, - це "багатопроцесорна робота".
Містер Пурпла

Відповіді:


6

Немає багатопотокового відображення QGIS 2.2, це функція, яка буде доступна в QGIS 2.4.

Ви можете спробувати QGIS Master (щоночі) для тестування, і тоді QGIS 2.4 запланований до випуску 20 червня 2014 року .


Ну, неправильно прочитайте своє запитання та з коментарів, схоже, що багатопотокова обробка - це те, що відбувається або на рівні розробника QGIS, або на рівні розробника Python Plugin.

Якщо в меню, вбудованому в QGIS, є певний інструмент QGIS, ніж для багатопотокової обробки, його, мабуть, потрібно буде закодувати розробником для QGIS або навіть до кореня інструменту (GDAL, SAGA, Orfeo, GRASS, R розробники тощо).

Якщо є певний плагін, ніж він, швидше за все, закодований навколо Python, і дописувач або підтримувач цього плагіна може побачити, чи можна включити модулі multiprocessingабо threadingдля підвищення його продуктивності.

Так чи інакше, подання запиту на функцію або переконання, чи існує вже такий, як правило, найкращий спосіб розпочати роботу. Це дозволить вам дізнатися, чи хтось уже вирішує питання про покращення або які ресурси будуть потрібні для його початку.


Це шкода ... У мене були проблеми з будівництвом з джерела в минулому. Якщо я просто додам Ppa для солянок і все те саме встановлю з apt, чи це дасть мені останню ніч? Будь-яка ідея про стабільність?
jpmaniac87

@ jpmaniac87 Я давно не користувався Ubuntu і роблю свою ГІС роботу на Arch Linux, тому я збираю все з джерела. Тож я б не знав, якими є PPA для Ubuntu, і якщо ви могли одночасно встановити QGIS (стабільний) з QGIS (master).
SaultDon

@ jpmaniac87 Як виглядає з цієї відповіді в іншому запитанні , це може бути неможливим, враховуючи, як версії QGIS пакуються в Ubuntu. Схоже, це те чи інше.
SaultDon

ЗНО справді працюють. Я просто прокоментував стабільні лінії та встановив нічні. Це швидко! Але ... він використовує лише декілька потоків буквально для візуалізації ... Я сподівався на більше процесів плагінів. Я думаю, це означало б, що творцям плагінів потрібно було б дозволити багатопотокову обробку у своєму коді?
jpmaniac87

1
@ jpmaniac87 Так, оскільки плагіни побудовані за допомогою Python, а для Python є модуль multiprocessingабо threading ( threadingяк правило, використовується queue), який вони повинні були б додавати до своїх сценаріїв спеціально.
SaultDon

3

Залежить від того, що ви хочете. Коли обробка переноситься на нову рамку диспетчера завдань, алгоритми зможуть запускатися паралельно (де це можливо). Наприклад, буфер для одного шару може запускатися, коли трансформація відбувається на інший шар. Якщо ви здійснюєте паралелізацію в рамках одного алгоритму (наприклад, буферизація функцій за допомогою декількох потоків), я не знаю про будь-які плани для вирішення цього питання.

Джерело: http://osgeo-org.1560.x6.nabble.com/Will-Processing-in-QGIS-3-support-parallelization-td5301809.html


Стара відповідь: Під час Google Summer of Code у 2015 році була розроблена підтримка багатопотокових передач для QGIS Processing. Код зараз переглядається, і очікується, що він з'явиться у версії для розробників у 2016 році. (Джерело: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... Це рішення, на жаль, не вдалося об'єднати.


Будь-яке оновлення з цього питання @underdark?
Рікардо Баррос Луренсо

Паралелізація все ще обмежена у більшості програм, на жаль. Я розумію, що використання інфраструктури баз даних, таких як PostGIS / postgres, дозволяє більш інтегровано керувати запитами та мати кращі багатопотокові можливості.
CrystallineEntity

2

Деяка нитка вбудована в основні функціональні можливості QGIS (рендеринг, наприклад, як описано у відповіді SaultDons), але багато функцій або алгоритмів можуть або не можуть вбудовувати нитки в залежності від їх розробки.

Для тих авторів плагінів pyQGIS (можливо, включаючи ОП), які бажають включити нанизування у свій плагін / скрипт, деяка допомога доступна на блозі snorfalorpagus. Сподіваємось, все більше та більше розробників використовуватимуть нитку - особливо для алгоритмів оподаткування.

Як зупинка, ви можете мати змогу скриптувати процес і використовувати схему паралельних процесів з поганими манами з викликами до асихронних скриптів оболонки, як описано у відповіді alexis тут

Якщо хтось має хороші ресурси для паралелізації завдань QGIS, будь ласка, відредагуйте та додайте їх до цієї відповіді :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.