Od kilku miesięcy programuję w Pythonie i opracowałem dość złożone skrypty do zadań geoprzetwarzania. To powiedziawszy, wciąż dużo się uczę, ponieważ pochodzę z języka SQL / VBA / VBScript.
Wiem, że skompilowany kod zazwyczaj działa szybciej niż kod, który musi być przetworzony przez interpretera języka, dlatego interesuje mnie możliwość skompilowania geoprzetwarzającego skryptu Python do pliku .EXE do pracy z dużymi danymi.
Czy to w ogóle możliwe? Jeśli tak, to jaki jest najlepszy sposób na skompilowanie skryptu Python (.py), który importuje moduły arcgisscripting lub arcpy?
Spędziłem kilka minut, szukając tego, co chcę zrobić, a wyszukiwanie zwróciło ten artykuł między innymi: http://www.ehow.com/how_2091641_compile-python-code.html
Kompilator wydawał się działać, ale po uruchomieniu wynikowego pliku .EXE wystąpił tajemniczy błąd informujący, że niektóre pliki były niedostępne.
Skrypt w Pythonie działa z wiersza poleceń, co wydaje się być całkiem dobre, ale zastanawiam się, czy mógłbym zobaczyć jakąś poprawę w przypadku skompilowania pliku .py. Ponownie pracuję z niektórymi dużymi zestawami danych, których przetwarzanie zajmuje więcej niż 20 godzin (wyznaczanie działów wodnych z wejściowych miejsc próbnych jakości wody). Wezmę wszystko, co mogę, aby ulepszyć.
Skrypt działał 10% szybciej poza ArcGIS z wiersza poleceń, używając zestawu testowego stron, w porównaniu do ustawienia skryptu jako narzędzia skryptowego w nowym zestawie narzędzi w ArcCatalog. Uruchomiłem skrypt z wiersza poleceń bez żadnego wystąpienia ArcGIS otwartego na dedykowanym komputerze.
Czy można więc skompilować skrypty Pythona, które importują moduł arcgisscripting i wywołują narzędzia ArcToolBox?
EDYTOWAĆ
Dzięki za wkład, to jest dla mnie pomocne. Skrypt jest w dużej mierze sposobem na koordynację wielu narzędzi ArcGIS i generowanie danych w pożądanych formatach / lokalizacjach / z odpowiednią atrybucją. Wydaje mi się, że już przyciąłem trochę tłuszczu, pisząc w folderze scratch zamiast scratch osobistej geobazy dla niektórych tymczasowych plików rastrowych, aby mogły być przechowywane w formacie ESRI GRID w porównaniu z formatem IMG. Sprawdzę jednak sugestie profilera.
W moim biurze jest kilka osób, które pytają Pythona, mówiąc: „skompilowany kod jest o wiele szybszy niż kod uruchamiany przez interpreter” głównie w porównaniu, powiedzmy, ze skompilowanego programu Visual Basic lub programu VB.NET, ale to dobrze, że narzędzia zabiorą trochę czasu. I wydaje się, że w dzisiejszych maszynach komputerowych interpretowany kod może nie być znacznie wolniejszy niż skompilowany kod, aby zagwarantować, że przejdzie się o krok dalej.
EDYCJA - aktualizacja dotycząca optymalizacji programu o formatach rastrowych.
Chciałem kontynuować moją „optymalizację” tego programu w języku Python i mogłem zaoszczędzić 2 godziny czasu przetwarzania, pisząc tymczasowe rastry w formacie GRID zamiast na osobistej geobazie. Co więcej, nastąpiło znaczące zmniejszenie zużycia miejsca na dysku w rozmiarze danych. Pierwotny przebieg, w którym napisałem wszystkie rastry (i były to tylko cechy punktowe przekonwertowane na rastry, a następnie rastry z przełomem) dały 37,1 GB danych tylko dla tych plików. Zapis dwóch ostatnich danych wyjściowych do folderu w formacie GRID został zredukowany do 667 MB danych.
Byłbym ciekawy, jak plik GDB poradziłby sobie z tymi danymi, chociaż głównie ze względu na ich rozmiar. Ale skrócenie mojego czasu przetwarzania z 9,5 godziny do 7,5 godziny z pewnością wystarcza, aby opowiedzieć się za rastrami spoza geobaz danych w formacie GRID.