Я работаю с Python уже несколько месяцев и разработал несколько достаточно сложных скриптов для задач геообработки. Тем не менее, я все еще многому учусь, поскольку исходил из опыта работы с SQL / VBA / VBScript.
Я знаю, что скомпилированный код обычно работает быстрее, чем код, который должен обрабатывать языковой интерпретатор, поэтому меня интересует возможность компиляции скрипта геообработки Python в файл .EXE для работы с большими данными.
Это вообще возможно? Если это так, как лучше всего скомпилировать скрипт Python (.py), который импортирует модули arcgisscripting или arcpy?
Я потратил несколько минут, пытаясь найти то, что я хочу сделать, и поиск дал эту статью среди других: http://www.ehow.com/how_2091641_compile-python-code.html
Компилятор, казалось, работал, но после выполнения полученного файла .EXE он дал загадочную ошибку, сообщив, что некоторые файлы были недоступны.
Скрипт Python запускает то, что кажется достаточно хорошим из командной строки, но мне интересно, смогу ли я увидеть небольшое улучшение, если бы смог скомпилировать файл .py. Опять же, я работаю с некоторыми большими наборами данных, на обработку которых уходит +20 часов (разграничение водоразделов на участках отбора проб качества воды). Я возьму все, что смогу улучшить.
Сценарий выполнялся на 10% быстрее вне ArcGIS из командной строки с использованием тестового набора сайтов по сравнению с настройкой сценария в качестве инструмента-скрипта на новой панели инструментов в ArcCatalog. Я запускал скрипт из командной строки без любого экземпляра ArcGIS, открытого на выделенной машине.
Итак, возможно ли скомпилировать скрипты Python, которые импортируют модуль arcgisscripting и которые вызывают инструменты ArcToolBox?
РЕДАКТИРОВАТЬ
Спасибо за вклад, это полезно для меня. Сценарий в значительной степени является способом координации ряда инструментов ArcGIS и вывода в желаемых форматах / местах / с соответствующей атрибуцией. Я уже обрезал некоторые толстые, я думаю, записав в пустую папку вместо чистой персональной базы геоданных некоторые промежуточные растровые файлы, чтобы они могли быть сохранены в формате ESRI GRID по сравнению с форматом IMG. Я проверю предложения профилировщика все же.
В моем офисе есть некоторые, кто спрашивает Python, что «этот скомпилированный код намного быстрее, чем код, выполняемый через интерпретатор», в основном по сравнению, скажем, с скомпилированной программой Visual Basic или программой VB.NET, но это хороший момент, который инструменты будут занимать время в любом случае. И, похоже, что в современных вычислительных машинах интерпретируемый код может быть не намного медленнее, чем скомпилированный код, чтобы оправдать эту лишнюю милю.
РЕДАКТИРОВАТЬ - обновление по оптимизации программы с растровыми форматами.
Хотел следить за моей «оптимизацией» этой программы на Python, и я смог сократить время обработки на 2 часа, записав временные растры в формат GRID вместо личной базы геоданных. Мало того, что произошло существенное сокращение потребления дискового пространства размера данных. Первоначальный прогон, который я написал для всех растров (а они были только точечными объектами, преобразованными в растры, а затем растровые поверхности), позволил получить 37,1 ГБ данных только для этих файлов. Запись последних двух выходных данных в папку в формате GRID была уменьшена до 667 МБ данных.
Мне было бы любопытно посмотреть, как файловая GDB будет обрабатывать эти данные, хотя в основном по размеру данных. Но сокращение моего времени обработки с 9,5 часов до 7,5 часов, безусловно, достаточно для защиты от работы с растрами вне баз геоданных в формате GRID.