<\/HEAD>
Problém<\/STRONG><\/SPAN><\/P>Kdokoli, kdo musel dělat jakýkoli skript s arcpy zahrnující složité opakující se úkoly, ví, jak dlouho může trvat jeho dokončení. I něco tak jednoduchého jako export několika tisíc mapových dokumentů do obrázků může potenciálně trvat hodiny. Část důvodu je v tom, že python ve výchozím nastavení běží v jednom vlákně. Programátor obeznámený s jinými jazyky, jako je Java nebo C++, by mohl mít chytrý nápad řešit tuto neefektivitu použitím multithreadingu k rozdělení práce mezi všechny CPU. Bohužel multithreading v pythonu nefunguje úplně stejným způsobem.<\/P><\/P>CPython, na kterém je arcpy postaven, používá tzv. Global Interpreter Lock (GIL), aby zabránil jednomu vláknu měnit objekt, zatímco jiné vlákno s tím objektem pracuje, což udržuje sběr odpadu plynulý. Nevýhodou však je, že python skripty s multithreadingem nemohou plně využít všechny dostupné CPU, což znemožňuje skutečné zrychlení.<\/P><\/P>Řešení<\/STRONG><\/SPAN><\/P>Přichází modul multiprocessing. Tento modul používá procesy místo vláken, čímž obchází GIL. Díky tomu mohou programátoři plně využít více procesorů na jakémkoli stroji, a i když procesy mají větší režii než vlákna, lze dosáhnout významného zrychlení.<\/P><\/P>Tato prezentace ukáže nejlepší postupy pro použití modulu multiprocessing s arcpy a ukáže příklady toho, jak aktuálně používáme multithreading k poskytování řešení klientům.<\/P><\/P>Spoluautoři:<\/P>Brett Gaines<\/A>Kelvin Fox<\/A><\/SPAN><\/P><\/BODY><\/HTML>