Je suis sur le point d'écrire du code Python très intensif en calcul qui passera probablement presque tout son temps dans les fonctions d'algèbre linéaire de numpy
. Le problème est embarrassingly parallel. Longue histoire courte, la façon la plus facile pour moi de profiter de cela serait d'utiliser plusieurs threads. Le principal obstacle sera certainement le Global Interpreter Lock (GIL).numpy et Global Interpreter Lock
Pour aider à concevoir ceci, il serait utile d'avoir un modèle mental pour lequel numpy
opérations peuvent s'attendre à libérer le GIL pour leur durée. À cette fin, j'apprécierais toute règle empirique, dos et ne pas faire, pointeurs etc.
Dans le cas où cela importe, j'utilise Python 2.7.1 64 bits sur Linux, avec numpy
1.5.1 et scipy
0.9.0rc2, construit avec Intel MKL 10.3.1.
Avez-vous envisagé d'utiliser la bibliothèque ['multiprocessing'] (http://docs.python.org/library/multiprocessing.html) au lieu de thread? Vous ne devriez plus vous soucier de GIL. – Jeannot
@Jeannot: Je l'ai, merci. En raison de la nature du problème, le filetage est mon premier choix. Si je ne peux pas le faire fonctionner, je regarderai les alternatives. – NPE