Про многопоточность, многозадачность и 64-битные вычисления в ArcGIS

ArcGIS Pro является многопоточным, 64-битным приложением. Что означают все эти термины?

Многопоточность или многозадачность

Есть два основных подхода к построению приложений способных выполнять параллельные вычисления в рамках одной операционной системы — многопоточность и многозадачность. С точки зрения конечного пользователя они работают одинаково, различия проявляются на стадии написания кода программ. Многопоточные (multithreading) приложения запускаются в одном процессе и используют общее адресное пространство оперативной памяти. Многозадачные (multiprocessing) приложения запускаются в виде отдельных процессов и каждому из этих процессов выделяется свой, отдельный участок  памяти. ArcGIS Pro является изначально многопоточным (multithreading) приложением. При запуске приложения в диспетчере задач появляется один процесс ArcGISPro.exe, при этом приложение способно выполнять различные задачи параллельно. Например, можно запустить фоновый процесс геообработки и одновременно работать с картами или сценами в соответствующих окнах.

Многопоточность в инструментах геообработки

Расчет может производиться на одном ядре или на нескольких. Часть инструментов геообработки ArcGIS Pro поддерживает многопоточность, часть нет, и если конкретный инструмент поддерживает параллельную обработку, то степень загрузки ядер процессора можно контролировать с помощью параметра Parallel Processing Factor. Про это мы уже писали в нашем блоге. В этом же посте можно найти список инструментов ArcGIS Pro, которые поддерживают многопоточную обработку.

Python multiprocessing

Что можно сделать, если инструмент не поддерживает параллельную обработку, но при этом очень хочется ускорить процессы обработки больших объемов данных? Можно написать скрипт на языке Python с использованием модуля Multiprocessing. Подробнее про эти возможности можно узнать из презентации с конференции разработчиков Esri. В ней же есть ссылки на другие ресурсы по этой теме. При написании скриптов, которые используют многозадачность/многопоточность нужно учитывать, что не все инструменты ArcGIS подерживают работу в параллельных процессах, что два потока или процесса могут конфликтовать при попытке записи данных в один и тот же  файл, и еще много других технических моментов. Но тем не менее эта задача вполне решаемая.

32-бита или 64-бита

И, наконец, отдельная тема: 32-битные и 64-битные вычисления. ArcGIS Pro является 64-битным приложением. ArcMap по умолчанию 32-битный, но может запускать инструменты геообработки в 64-битном режиме в случае установки соответствующего расширения, которое можно найти в стандартном дистрибутиве приложения. Если приложение является 64-битным, это (как правило) никак не сказывается на его производительности, не делает его многозадачным, количество бит означает только то, что процесс, внутри которого работает данное приложение, может получать от операционной системы большее количество оперативной памяти. Для 32-битных приложений в Windows максимальный размер выделенной оперативной памяти лежит в диапазоне от 2 до 4 GB. Для 64-битного приложения лимит увеличивается до 8 TB.