Я кодую Python уже кілька місяців і розробив кілька досить складних сценаріїв, що стосуються головним чином завдань геообробки. Попри це, я все ще багато навчаюсь, оскільки я виходжу з фону SQL / VBA / VBScript.
Я знаю, що компільований код, як правило, працює швидше, ніж код, який повинен бути оброблений інтерпретатором мови, тому мене цікавить можливість компіляції сценарію Python для геообробки до файлу .EXE для роботи з великими даними.
Це навіть можливо? Якщо це так, то який найкращий спосіб скласти сценарій Python (.py), який імпортує модулі arcgiskcripting або arcpy?
Я витратив кілька хвилин на пошук того, що хочу зробити, і пошук повернув цю статтю серед інших: http://www.ehow.com/how_2091641_compile-python-code.html
Здавалося б, компілятор працює, але після виконання отриманого файлу .EXE він видав явну помилку, кажучи, що деякі файли недоступні.
Сценарій Python запускає те, що здається досить добре з командного рядка, але мені цікаво, чи можу я побачити незначне поліпшення, якщо мені вдалося скласти файл .py. Знову ж таки, я працюю з деякими великими наборами даних, на які витрачається +20 годин на обробку (відмежуючи вододіли від вхідних зразків якості якості води). Я візьму все, що можу, щоб покращити.
Сценарій пробіг на 10% швидше за межами ArcGIS з командного рядка, використовуючи тестовий набір сайтів проти налаштування сценарію як інструменту сценарію в новому інструментальному інструменті в ArcCatalog. Я запускав сценарій з командного рядка без будь-якого примірника ArcGIS, відкритого на спеціальній машині.
Отже, чи можливо компілювати сценарії Python, які імпортують модуль arcgisscripting та викликають інструменти ArcToolBox?
EDIT
Дякую за вклад, це корисно для мене. Сценарій багато в чому є способом координувати ряд інструментів ArcGIS та виводити в потрібних форматах / місцях / з відповідним атрибуцією. Я вже обрізав трохи жиру, я думаю, записуючи в папку "Скретч" замість особистої бази даних скретчів для деяких проміжних растрових файлів, щоб вони могли зберігатися у форматі ESRI GRID та форматі IMG. Я перевірю пропозиції профілерів, хоча.
У моєму кабінеті є хтось із запитань Python, що "компільований код набагато швидший, ніж код, що проходить через інтерпретатора", головним чином порівняно з, скажімо, складеною програмою Visual Basic або програмою VB.NET, але це хороший момент, що інструменти займуть час у будь-якому випадку. І, схоже, що в сучасних обчислювальних машинах, які інтерпретують код, може бути не набагато повільніше, ніж компільований код, що вимагає пройти цю відстань.
EDIT - оновлення щодо оптимізації програми за допомогою растрових форматів.
Хотіла слідкувати за моєю "оптимізацією" цієї програми Python, і мені вдалося поголити 2 години обробки часу, написавши проміжні растри у форматі GRID замість особистої бази даних. Мало того, було значне зменшення споживання дискового простору на розмір даних. У початковому виконанні я писав усі растрові (і вони були лише точковими функціями, перетвореними на растрові, а потім затоплені растри) привели до 37,1 ГБ даних саме для цих файлів. Запис двох останніх виходів даних у папку у форматі GRID було скорочено до 667 Мб даних.
Мені буде цікаво побачити, як файл GDB обробляє ці дані, хоча в основному за розміром даних. Але, скорочення мого часу на обробку з 9,5 годин до 7,5 годин, безумовно, достатньо, щоб відстоювати справу з растрами поза базами геоданих у форматі GRID.