<\/HEAD>
Le Problème<\/STRONG><\/SPAN><\/P>Quiconque a dû faire du scripting avec arcpy impliquant des tâches répétitives complexes sait combien cela peut prendre du temps pour s'exécuter. Même quelque chose d'aussi simple que d'exporter quelques milliers de documents cartographiques en images peut potentiellement prendre des heures. Une partie de la raison est due au fait que python, par défaut, s'exécute dans un seul thread. Un programmeur familier avec d'autres langages, tels que Java ou C++, pourrait avoir l'idée brillante de résoudre cette inefficacité en utilisant le multithreading pour partager le travail entre tous les CPU. Malheureusement, le multithreading en python ne fonctionne pas tout à fait de la même manière.<\/P><\/P>CPython, sur lequel arcpy est construit, utilise ce qu'on appelle le Global Interpreter Lock (GIL) pour empêcher un thread de modifier un objet pendant qu'un autre thread travaille avec cet objet, assurant ainsi un bon fonctionnement du ramassage des déchets. Cependant, l'inconvénient est que les scripts multithreading python ne peuvent pas tirer pleinement parti de tous les CPU disponibles, empêchant ainsi toute amélioration réelle de la vitesse.<\/P><\/P>La Solution<\/STRONG><\/SPAN><\/P>Voici le module multiprocessing. Ce module utilise des processus au lieu de threads, contournant ainsi le GIL. Grâce à cela, les programmeurs peuvent exploiter pleinement plusieurs processeurs sur n'importe quelle machine donnée, et bien que les processus aient une surcharge plus importante que les threads, des gains significatifs en vitesse peuvent être obtenus.<\/P><\/P>Cette présentation montrera les meilleures pratiques pour utiliser le module multiprocessing avec arcpy, et présentera des exemples de la façon dont nous utilisons actuellement le multithreading pour fournir des solutions aux clients.<\/P><\/P>Co-auteurs:<\/P>Brett Gaines<\/A>Kelvin Fox<\/A><\/SPAN><\/P><\/BODY><\/HTML>