Estoy a punto de escribir un código Python intensivo en cómputo que seguramente pasará la mayor parte del tiempo dentro de las funciones de álgebra lineal de numpy
.numpy y Global Interpreter Lock
El problema en cuestión es embarrassingly parallel. Para resumir, la forma más fácil de aprovechar eso sería mediante el uso de múltiples hilos. La barrera principal seguramente será la Esclusa Global de Intérpretes (GIL).
Para ayudar a diseñar esto, sería útil tener un modelo mental para el que se espera que las operaciones numpy
liberen el GIL durante su duración. Con este fin, agradecería cualquier regla general, lo que se debe y no se debe hacer, punteros, etc.
En caso de que importe, estoy usando Python 2.7.1 de 64 bits en Linux, con numpy
1.5.1 y scipy
0.9.0rc2, construido con Intel MKL 10.3.1.
¿Ha considerado usar el ['multiprocessing'] (http://docs.python.org/library/multiprocessing.html) lib en lugar de hilo? Ya no tendrías que preocuparte por GIL. – Jeannot
@Jeannot: lo tengo, gracias. Debido a la naturaleza del problema, el enhebrado es mi primera opción. Si no puedo hacer que funcione, veré las alternativas. – NPE