Saya telah mengkode dengan Python selama beberapa bulan sekarang dan telah mengembangkan beberapa skrip yang cukup kompleks untuk tugas-tugas geoprosesing. Yang sedang berkata, saya masih belajar banyak karena saya berasal dari latar belakang SQL / VBA / VBScript.
Saya tahu bahwa kode yang dikompilasi biasanya berjalan lebih cepat daripada kode yang harus diproses oleh penerjemah bahasa, jadi saya tertarik pada kemungkinan mengkompilasi skrip Python geoprosesing ke file .EXE untuk bekerja dengan data besar.
Apakah ini mungkin? Jika ya, apa cara terbaik untuk mengkompilasi skrip Python (.py) yang mengimpor modul arcgisscripting atau arcpy?
Saya menghabiskan beberapa menit mencoba menemukan apa yang ingin saya lakukan dan pencarian mengembalikan artikel ini antara lain: http://www.ehow.com/how_2091641_compile-python-code.html
Kompiler tampaknya berfungsi, tetapi setelah mengeksekusi file .EXE yang dihasilkan, ia memberikan kesalahan samar mengatakan beberapa file tidak tersedia.
Skrip Python menjalankan apa yang tampaknya cukup baik dari baris perintah, tapi saya bertanya-tanya apakah saya bisa melihat sedikit perbaikan jika saya dapat mengkompilasi file .py. Sekali lagi, saya sedang bekerja dengan beberapa dataset besar yang membutuhkan waktu +20 jam untuk diproses (menggambarkan daerah aliran sungai dari lokasi sampel kualitas air masukan). Saya akan mengambil apa saja yang bisa saya lakukan untuk perbaikan.
Script berjalan 10% lebih cepat di luar ArcGIS dari baris perintah menggunakan set uji situs dibandingkan mengatur script sebagai alat skrip di kotak peralatan baru di ArcCatalog. Saya telah menjalankan skrip dari baris perintah tanpa ArcGIS terbuka pada mesin khusus.
Jadi, apakah mungkin untuk mengkompilasi skrip Python yang mengimpor modul arcgisscripting dan yang memanggil alat ArcToolBox?
EDIT
Terima kasih atas masukannya, ini sangat membantu saya. Script ini sebagian besar merupakan cara untuk mengoordinasikan sejumlah alat ArcGIS dan menghasilkan dalam format / lokasi yang diinginkan / dengan atribusi yang sesuai. Saya sudah memangkas beberapa lemak yang saya pikir dengan menulis ke folder awal bukannya ke awal geodatabase pribadi untuk beberapa file raster sementara sehingga mereka dapat disimpan dalam format ESRI GRID vs. format IMG. Saya akan memeriksa saran profiler sekalipun.
Ada beberapa di kantor saya yang mempertanyakan Python mengatakan "bahwa kode yang dikompilasi jauh lebih cepat daripada kode yang berjalan melalui penerjemah" terutama dibandingkan dengan, katakanlah, program Visual Basic yang dikompilasi atau program VB.NET, tetapi itu adalah poin yang baik bahwa alat akan memakan waktu baik cara. Dan, sepertinya dengan mesin komputasi masa kini bahwa kode yang ditafsirkan mungkin tidak lebih lambat dari kode yang dikompilasi untuk menjamin bekerja lebih keras.
EDIT - pembaruan tentang pengoptimalan program dengan format raster.
Ingin menindaklanjuti "optimasi" saya dari program Python ini, dan saya dapat mencukur 2 jam waktu pemrosesan dengan menulis raster sementara ke format GRID daripada ke geodatabase pribadi. Tidak hanya itu, ada pengurangan signifikan dalam konsumsi ruang disk ukuran data. Jangka asli saya menulis semua raster (dan mereka hanya fitur titik dikonversi ke raster, dan kemudian raster DAS) menghasilkan 37,1 GB data hanya untuk file-file itu. Menulis dua output data terakhir ke folder dalam format GRID dikurangi menjadi 667 MB data.
Saya ingin tahu bagaimana file GDB akan menangani data ini meskipun terutama dalam ukuran data. Tetapi, mengurangi waktu pemrosesan saya dari 9,5 jam menjadi 7,5 jam tentu cukup untuk mengadvokasi untuk berurusan dengan raster di luar geodatabases dalam format GRID.