Une différence de performances entre la fenêtre Python et l'outil de script Python?

9

Existe-t-il une différence de performances entre l'exécution d'un script Python dans la fenêtre Python et son exécution en tant qu'outil de script Python à partir de la boîte à outils d'ArcGIS Desktop 10.0?

Parfois, je dois utiliser ArcPy et faire fonctionner ArcGIS. Dans ma récente expérience, je peux exécuter le même script via la boîte à outils et dans la fenêtre python et la boîte à outils semble être un peu plus rapide.

Piment
la source
Lorsque vous utilisez des scripts autonomes: vous n'avez pas besoin d'ouvrir Arcmap, vous économisant ainsi du temps et des ressources (CPU et mémoire). Je ne peux pas me permettre un ordinateur décent pour le moment.
gm70560
La boîte à outils n'est pas non plus en mesure de toucher le document ArcMap actuel. Vous devez pointer vers un mxd pour faire quoi que ce soit avec une carte spécifique dans un outil, où vous pouvez utiliser arcpy.mapping.MapDocument ("CURRENT") dans la fenêtre python.
eseglem
3
@eseglem, vous devriez certainement pouvoir utiliser le CURRENTmot - clé pour accéder au document ArcMap actuel dans un outil de script, tant qu'il est en cours d'exécution.
blah238
1
@ gm70560 Lorsque vous exécutez un script autonome, vous devez créer une sorte d'instance Arcmap, ce qui prend du temps. Dans la fenêtre python déjà démarrée.
Matthew Snape
2
import arcpyprendra beaucoup de temps en tant que script autonome (ou partie d'une boîte à outils), alors que dans ArcMap, il fait déjà partie de l'espace de noms de la fenêtre python.
Michael Markieta

Réponses:

5

Michael Markieta et gm70560 sont corrects. Si vous exécutez de grandes tâches de géotraitement, je le ferais certainement via un script python autonome, de préférence lancé depuis la ligne de commande et non un IDE. Pour ce type de tâche, la surcharge de l'importation d'ArcPy en vaut la peine.

Cependant, une petite tâche, en particulier une qui nécessite une intervention de l'utilisateur, est généralement plus rapide et plus pratique dans ArcMap - à moins que vous ne deviez ouvrir ArcMap spécifiquement dans ce cas, dans ce cas, vous avez la charge de démarrer ArcMap lui-même plus un certain temps d'arrêt pour vous connecter à toutes vos bases de données référencées dans le MXD (qui, si elles sont sur une connexion réseau lente, peuvent être fastidieuses).

De même, le traitement par lots, même de petites tâches, est, à mon avis, mieux fait dans un script Python autonome que via une boîte à outils dans ArcMap car vous ne prenez cette importation qu'une seule fois et n'avez pas la surcharge ArcMap.

Ayant fait beaucoup de géotraitement automatisé via des scripts Python, je serais par défaut à les exécuter en tant que processus autonomes parce que j'aime la vitesse et la flexibilité supplémentaires. La plupart des tâches qui s'exécutent plus rapidement dans la boîte à outils sont généralement suffisamment petites pour que je les ai exécutées dans ModelBuilder sans prendre la peine d'écrire du code.

MappaGnosis
la source