В моей программе у меня есть метод, который требует, чтобы при каждом его вызове открывалось около 4 файлов, так как мне нужно взять некоторые данные. Все эти данные из файла, который я хранил в списке для манипуляции. Мне примерно нужно вызывать этот метод около 10000 раз. Что делает мою программу очень медленной?
Любой метод для обработки этих файлов лучше и хранение целых данных в списке занимает много времени, что является лучшей альтернативой для списка?
Я могу дать некоторый код, но мой предыдущий вопрос был закрыт, так как это только смутило всех, так как это часть большой программы, и ее нужно полностью объяснить, чтобы понять, поэтому я не даю никакого кода, пожалуйста, предложите способы, чтобы думать об этом в целом вопрос...
Заранее спасибо
5 ответов
Возможно, было бы лучше загрузить ваши данные в базу данных и поместить некоторые индексы в базу данных. Тогда будет очень быстро делать простые запросы к вашим данным. Вам не нужно много работать, чтобы настроить базу данных. Вы можете создать SQLite базу данных, не требуя отдельного процесса, и в ней нет сложного процесса установки.
Если файлы структурированы, вроде файлов конфигурации, возможно, было бы хорошо использовать библиотеку ConfigParser, иначе, если у вас есть другой структурный формат, то я думаю, что было бы лучше хранить все эти данные в JSON или XML и выполнять любые необходимые операции с вашими данными.
Как общая стратегия, лучше хранить эти данные в кеше в памяти, если они статичны и относительно малы. Затем вызовы 10k будут читать кэш в памяти, а не файл. Намного быстрее.
Если вы изменяете данные, альтернативой может быть база данных, такая как SQLite, или встроенный MS SQL Server (и есть и другие!).
Не ясно, что это за вид данных. Это просто данные конфигурации / свойств? Иногда вы можете найти библиотеки для обработки / манипулирования / хранения этих данных, и они обычно имеют собственный внутренний кэш в памяти, все, что вам нужно сделать, это вызвать одну или две функции.
Без дополнительной информации о файлах (насколько они велики?) И данных (как они отформатированы и структурированы?) Сложно сказать больше.
Открытие, закрытие и чтение файла 10000 раз всегда будет медленным. Можете ли вы открыть файл один раз, сделать 10000 операций над списком, а затем закрыть файл один раз?
Вызовите файл open из вызывающего метода того, который вы хотите запустить. Передать данные в качестве параметров методу
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.