2015-06-14 2 views
1

Я написал несколько библиотек Python и структурировал их как модуль. Все файлы в модуле требуют некоторых данных из текстового файла для работы. Самое простое решение - позволить каждой библиотеке читать файл всякий раз, когда ему это нужно. Однако чтение одного и того же файла несколько раз кажется неэффективным. Я бы предпочел прочитать файл только один раз и поделиться этими данными между различными библиотеками. Я мог бы написать дополнительную библиотеку для чтения данных при инициализации и сохранить ее в глобальной переменной, чтобы впоследствии ее можно было импортировать из других библиотек. Хотя это может сработать, я все же считаю, что это решение не самое элегантное. Есть ли какая-либо передовая практика для такого рода проблем?Обмен данными в модуле Python

+0

Каковы данные? – vmonteco

+0

Предположим, что это файл конфигурации, написанный в YAML, содержащий некоторые пользовательские настройки. Эти параметры не будут занимать много памяти, поэтому я буду держать их загруженными до тех пор, пока работает модуль. – Funkatic

ответ

0

Поскольку он должен использоваться обычно среди модулей, использование должно создать файл, называемый константами внутри вашего пакета, и инициализировать переменную содержимым файла. Как запоздалая мысль, файл инициализации пакета также является хорошим кандидатом для такого рода данных.

0

Если это конфигурация, вы также можете переписать ее на python и сделать некоторые программные средства (например: django). Конфигурация Django находится в файле с именем settings.py. Вы можете импортировать его с чем-то вроде:

from django.conf import settings 

И вы можете использовать то, что в пределах с помощью settings.some_variable.

Надеюсь, это поможет.