Вот мое решение проблемы. Работает на Python3. Основные функции:
. Шаги следующие:
$HOME/
python_versions/ : download Python-*.tgz packages here and "tar xvf" them. You'll get directories like this:
Python-3.4.8/
Python-3.6.5/
Python-3.x.y/
...
mkdir root
./configure --prefix=$PWD/root
make -j 2
make install
virtualenv --no-site-packages -p root/bin/python3.x env
env_python3x.bash:
#!/bin/bash
echo "type deactivate to exit"
source $HOME/python_versions/Python-3.x.y/env/bin/activate
source $HOME/python_versions/env_python3x.bash
, чтобы ввести virtualenv pip install --upgrade package_name
Не используйте внешний код для проверки на наличие дубликатов. Мощь базы данных (даже Access) максимизирует свои операции с наборами данных. Не пытайтесь переписать такой код, тем более что, как вы обнаружили, он неэффективен. Вместо этого импортируйте все во временную таблицу базы данных, а затем используйте Access (или соответствующий механизм данных Access) для выполнения операторов SQL для сравнения таблиц, либо находя, либо исключая повторяющиеся строки. Результаты этих запросов могут затем использоваться для создания и / или обновления других таблиц - все в контексте механизма базы данных. Конечно, создайте временную таблицу (таблицы) с соответствующими индексами и ключами, чтобы максимизировать эффективность.
В то же время, обычно быстрее (можно ли сказать всегда?) При локальном сравнении наборов данных (т.е. таблиц) загружать все значения в некоторую коллекцию с возможностью поиска из одного запроса к базе данных (например, оператора SQL SELECT), затем используйте эту коллекцию в памяти для поиска совпадений. Это может показаться ироничным после моего последнего утверждения о максимизации возможностей базы данных, но большая идея заключается в понимании того, как обрабатывается набор данных в целом. Транспортировка данных туда и обратно между процессами Python и механизмом базы данных, даже если они находятся на одной машине, будет намного медленнее, чем обработка всего внутри процесса Python или всего процесса внутри механизма базы данных. Единственный случай, который может оказаться бесполезным, это когда удаленный набор данных слишком велик для загрузки, но 87 000 значений ключей определенно достаточно малы, чтобы загрузить все значения в коллекцию Python.