У этого должен быть ответ, но я не могу его найти. Я использую довольно большой модуль python, называемый quippy. С помощью этого модуля можно определить межмолекулярный потенциал для использования в качестве калькулятора в ASE так:Как избежать повторного импорта модулей и переопределения большого объекта каждый раз при запуске скрипта
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)
Это начало скрипта. Проблема в том, что import
занимает около 3 секунд, а pot=Potential...
занимает около 30 секунд со 100% -ной загрузкой процессора. (Я считаю, что это связано с разбором большого xml-файла ascii.) Если бы я набирал текст в интерактивном режиме, я мог бы сохранить модуль импортированным и определить потенциал, но при запуске скрипта он выполняется снова при каждом запуске.
Могу ли я сохранить модуль и потенциальный объект в памяти/диске между прогонами? Может ли поддерживать процесс python на холостом ходу и хранить эти вещи в памяти? Или запустите эти строки в интерпретаторе и как-нибудь вызовите остальную часть скрипта оттуда?
Любой подход - это хорошо, но нам нужна помощь!
Как часто вы можете позвонить в скрипт? Если у вас достаточно ОЗУ, ваша ОС будет кэшировать файлы модулей, используемые во время 'import'. Если вы хотите сохранить 'pot', просто напишите его в файл, например. используя 'pickle'. – MisterMiyagi