me escribió un programa que llama a una función con el siguiente prototipo:¿Ejecutar varias instancias de un programa python de manera eficiente y económica?
def Process(n):
# the function uses data that is stored as binary files on the hard drive and
# -- based on the value of 'n' -- scans it using functions from numpy & cython.
# the function creates new binary files and saves the results of the scan in them.
#
# I optimized the running time of the function as much as I could using numpy &
# cython, and at present it takes about 4hrs to complete one function run on
# a typical winXP desktop (three years old machine, 2GB memory etc).
Mi objetivo es ejecutar esta función exactamente 10.000 veces (para 10.000 valores diferentes de 'n') en el & forma más económica más rápida. Después de estas ejecuciones, tendré 10.000 archivos binarios diferentes con los resultados de todos los escaneos individuales. tenga en cuenta que cada función 'ejecutar' es independiente (es decir, no hay dependencia alguna entre las ejecuciones individuales).
Así que la pregunta es esta. teniendo solo una PC en casa, es obvio que me tomará alrededor de 4.5 años (10,000 carreras x 4 horas por ciclo = 40,000 hrs ~ = 4.5 años) para completar todas las carreras en casa. sin embargo, me gustaría tener todas las corridas completadas dentro de una semana o dos.
Sé que la solución implicaría acceder a muchos recursos informáticos a la vez. ¿Cuál es la mejor forma (más rápida/más asequible, ya que mi presupuesto es limitado) de hacerlo? debo comprar un servidor fuerte (¿cuánto costaría?) o ¿puedo ejecutarlo en línea? en tal caso, ¿se expone mi código propietario al hacerlo?
en caso de que ayude, cada instancia de 'Process()' solo necesita alrededor de 500MB de memoria. Gracias.
¿Qué significa 'Process'? Sin más información, no creo que sea fácil mejorar la velocidad más de 2 veces (asumiendo el doble núcleo). – kennytm
KennyTM: gracias por su respuesta. incluso si el tiempo de ejecución disminuye a la mitad (lo cual es poco probable), me tomará 2.5 años ejecutarlo todo. por lo tanto, el foco aquí está en el lado de la paralelización del problema. si tienes una buena idea para esto, sería genial. –