<\/HEAD>
Het Probleem<\/STRONG><\/SPAN><\/P>Iedereen die ooit met arcpy heeft gescript voor complexe repetitieve taken weet hoe lang het kan duren voordat het klaar is. Zelfs iets eenvoudigs als het exporteren van een paar duizend mapdocumenten naar afbeeldingen kan potentieel uren in beslag nemen. Een deel van de reden hiervoor is dat python standaard in een enkele thread draait. Een programmeur die bekend is met andere talen, zoals Java of C++, zou kunnen denken deze inefficiëntie aan te pakken door multithreading te gebruiken om het werk te verdelen over alle CPU's. Helaas werkt multithreading in python niet op dezelfde manier.<\/P><\/P>CPython, waarop arcpy is gebouwd, gebruikt wat bekend staat als de Global Interpreter Lock (GIL) om te voorkomen dat één thread een object wijzigt terwijl een andere thread met dat object werkt, waardoor de garbage collection soepel blijft werken. Het nadeel hiervan is echter dat python multithreading scripts niet volledig gebruik kunnen maken van alle beschikbare CPU's, wat echte snelheidswinst verhindert.<\/P><\/P>De Oplossing<\/STRONG><\/SPAN><\/P>Hier komt de multiprocessing module om de hoek kijken. Deze module gebruikt processen in plaats van threads, waardoor de GIL wordt omzeild. Hierdoor kunnen programmeurs meerdere processors op een machine volledig benutten, en hoewel processen meer overhead hebben dan threads, kunnen aanzienlijke snelheidswinst worden behaald.<\/P><\/P>Deze presentatie zal best practices tonen voor het gebruik van de multiprocessing module met arcpy, en voorbeelden laten zien van hoe we momenteel multithreading gebruiken om oplossingen aan klanten te bieden.<\/P><\/P>Co-auteurs:<\/P>Brett Gaines<\/A>Kelvin Fox<\/A><\/SPAN><\/P><\/BODY><\/HTML>