как это решение, я использую теперь:
У меня есть 1 МБ .dbf файл в том же каталоге всех моих .py модулей. В main.py
Я имею
import tools
В tool.py
код:
the_list_that_never_changes = loadDbf(file).variables['CNTYIDFP'].
Так the_list_that_never_changes
только загружается однажды и всегда находится в памяти, готовой использоваться... корректный?
Статические файлы хранятся отдельно от файлов приложений. Если вам нужно загрузить data.pkl
из main.py
, то не отмечайте его как статический файл, и он будет доступен main.py
как любой другой файл приложения.
Ссылка: Handlers For Static Files в Application Configuration.
Альтернатива: Почему бы не определить информацию, хранящуюся в data.pkl
, как глобальную переменную в вашем исходном тексте Python? Тогда вам не придется заниматься чтением файла и десериализацией его маринованного содержимого, и это будет немного быстрее. Это также позволит легко воспользоваться преимуществами кэширования приложений - ваши данные будут загружены один раз, а затем кэшированы для использования последующими запросами.
Поместите data.pkl
в тот же каталог с main.py
и используйте что-нибудь вроде этих строк:
pickle_path = os.path.join(os.path.dirname(__file__), 'data.pkl')
f = open(pickle_path)
data = pickle.load(f)
Не добавляйте data.pkl
- app.yaml
.
Если вы часто читаете эти данные, может быть полезно кэшировать их в памяти после извлечения. Затем вы можете прочитать его из кэша памяти, что обычно быстрее, чем чтение файла с диска.