Pour les i7, il faut tester en desactivant l'HyperThreading, ça peut augmenter les perfs en monothread. C'est aprfois conseillé aussi par les développeurs de logiciels de calcul par éléments finis qui sont fortement optimisé multithread mais en tirent pas aprti de l'hyperthreading efficacement (rapport surcout de calcul pour la parallelisation / performances supplémentaires)
Sinon, pour ce que tu as à faire en python, le moins cher serait d'utiliser la librairie threading et de vraiment exploiter ton processeur. Bien sûr, cela demande des précautions quand on parallélise un calcul mais il n'y a rien d'insurmontable.
edit : tu travailles avec des float, tu pourrais utiliser CUDA/openCL avec un GPU grand public aussi. Sur Matlab (avec CUDA), c'est plus simple à implémenter je pense, je ne m'y connais pas assez en python pour savoir si c'est aussi simple.
Vu le nombre de calculs à faire, il y a certainements des optimisation à faire sur le code (vectoriser, ...) regarde aussi avec Numpy qui est beaucoup plus efficace en ajoutant un type array plus efficace que les listes
Message édité par julien240588 le 30-06-2017 à 09:24:27