Tant que vous faites des quantités infimes de travail dans votre « script principal » (celui que vous appeler directement avec python
et qui obtient un __name__
de __main__
) vous n'avez pas à vous soucier de "mettre en cache le bytecode python précompilé": lorsque vous import foo
, foo.py
est enregistré sur le disque (même répertoire) que foo.pyc
, tant que ce répertoire est accessible en écriture, la compilation déjà bytecode arrive une fois et "pour toujours" Python chargera foo.pyc
directement dans chaque nouveau processus qui d oes import foo
- dans un seul processus, tous les import foo
sauf le premier est juste une recherche rapide dans un dictionnaire en mémoire (le dictionnaire sys.module
). Une idée de performance de base en Python: s'assure que chaque bit de code substantiel se produit dans def
instructions dans les modules - n'ont pas de au niveau supérieur du module, dans le script principal, ou esp. dans exec
et eval
instructions/expressions! -). Je n'ai pas de benchmarks pour PHP et Python, mais j'ai remarqué que Python continue à être optimisé à chaque nouvelle version, donc assurez-vous de comparer une version récente (idéalement 2.7, au moins 2.6) si vous voulez voir "les fastes Python". Si vous ne le trouvez pas encore assez vite, cython
(un dialecte Python conçu pour compiler directement en C, et donc en code machine, avec quelques limitations) est aujourd'hui le moyen le plus simple d'optimiser de manière sélective les modules dont le profilage vous indique le besoin.
Lien: http://code.google.com/p/modwsgi/ – dkamins