Tenemos alrededor de 500 GB de imágenes en varios directorios que debemos procesar. Cada imagen tiene un tamaño de aproximadamente 4 MB y tenemos un script de Python para procesar cada imagen de una en una (lee los metadatos y los almacena en una base de datos). Cada directorio puede tardar de 1 a 4 horas en procesarse dependiendo del tamaño.La forma más rápida de procesar archivos de gran tamaño en Python
Tenemos a nuestra disposición un procesador de cuádruple núcleo de 2.2Ghz y 16 GB de RAM en un sistema operativo GNU/Linux. El script actual está utilizando solo un procesador. ¿Cuál es la mejor manera de aprovechar los otros núcleos y RAM para procesar imágenes más rápido? ¿Comenzará con múltiples procesos de Python para ejecutar el script aprovechando los otros núcleos?
Otra opción es usar algo como Gearman o Beanstalk para cultivar el trabajo en otras máquinas. He echado un vistazo a la biblioteca de multiprocesamiento pero no estoy seguro de cómo puedo utilizarla.
posible duplicado de [¿Cómo utilizar todos los núcleos en Windows 7?] (Http://stackoverflow.com/questions/3055696/how-to-use-all-the-cores-in-windows-7) –
Si ya tiene un script en funcionamiento que puede señalar los archivos/directorios que desee, considere escribir un script de shell para activar tantas instancias como necesite. –
Comenzaría mirando dónde están los cuellos de botella. Si gasta la mayor parte de su tiempo realizando IO, entonces no podrá ir mucho más rápido. Por ejemplo, si un solo proceso logra cargar datos del disco a una cierta velocidad, es muy poco probable que pueda mantener esa velocidad cuando varios procesos mastican el disco. –