Cela doit avoir une réponse, mais je ne peux pas le trouver. J'utilise un assez grand module python appelé quippy. Avec ce module, on peut définir un potentiel intermoléculaire à utiliser comme une calculatrice ASE comme ceci:Comment éviter réimporter modules et redéfinissant grand objet chaque fois qu'un script est exécuté
from quippy import *
from ase import atoms
pot=Potential("Potential xml_label=gap_h2o_2b_ccsdt_3b_ccsdt",param_filename="gp.xml")
some_structure.set_calculator(pot)
C'est le début d'un script. Le problème est que le import
prend environ 3 secondes et pot=Potential...
prend environ 30 secondes avec 100% de la charge du processeur. (Je crois que cela est dû à l'analyse d'un grand fichier xml ascii.) Si je devais taper interactivement je pourrais garder le module importé et le potentiel défini, mais lors de l'exécution du script, il est fait à chaque exécution.
Puis-je enregistrer le module et l'objet potentiel en mémoire/disque entre pistes? Peut-être garder un processus python au ralenti et garder ces choses en mémoire? Ou exécutez ces lignes dans l'interpréteur et d'une manière ou d'une autre appelez le reste du script à partir de là?
Toute approche est très bien, mais un peu d'aide est appréciée!
Comment sont souvent vous appelle le script? Si vous avez suffisamment de RAM, votre système d'exploitation mettra en cache les fichiers de module utilisés pendant 'import'. Si vous voulez stocker 'pot', il suffit de l'écrire dans un fichier, par exemple. en utilisant 'pickle'. – MisterMiyagi