<\/HEAD>
Das Problem<\/STRONG><\/SPAN><\/P>Jeder, der schon einmal mit arcpy Skripte für komplexe, sich wiederholende Aufgaben geschrieben hat, weiß, wie lange es dauern kann, bis diese abgeschlossen sind. Selbst etwas so Einfaches wie das Exportieren von ein paar tausend Kartendokumenten als Bilder kann potenziell Stunden in Anspruch nehmen. Ein Teil des Grundes dafür ist, dass python standardmäßig in einem einzelnen Thread läuft. Ein Programmierer, der mit anderen Sprachen wie Java oder C++ vertraut ist, könnte auf die Idee kommen, diese Ineffizienz durch Multithreading zu beheben, um die Arbeit auf alle CPUs zu verteilen. Leider funktioniert Multithreading in python nicht ganz auf dieselbe Weise.<\/P><\/P>CPython, auf dem arcpy basiert, verwendet das sogenannte Global Interpreter Lock (GIL), um zu verhindern, dass ein Thread ein Objekt verändert, während ein anderer Thread mit diesem Objekt arbeitet, wodurch die Garbage Collection reibungslos funktioniert. Der Nachteil dabei ist jedoch, dass python-Multithreading-Skripte nicht alle verfügbaren CPUs vollständig nutzen können, was echte Geschwindigkeitsgewinne verhindert.<\/P><\/P>Die Lösung<\/STRONG><\/SPAN><\/P>Hier kommt das multiprocessing-Modul ins Spiel. Dieses Modul verwendet Prozesse statt Threads und umgeht somit das GIL. Dadurch können Programmierer mehrere Prozessoren auf einer Maschine voll ausnutzen, und obwohl Prozesse einen höheren Overhead als Threads haben, können erhebliche Geschwindigkeitssteigerungen erzielt werden.<\/P><\/P>Diese Präsentation zeigt bewährte Methoden für die Verwendung des multiprocessing-Moduls mit arcpy und gibt Beispiele dafür, wie wir derzeit Multithreading einsetzen, um Lösungen für Kunden bereitzustellen.<\/P><\/P>Mitautoren:<\/P>Brett Gaines<\/A>Kelvin Fox<\/A><\/SPAN><\/P><\/BODY><\/HTML>