Сохранить деку в текстовом файле - PullRequest
1 голос
/ 10 декабря 2008

Я пишу сканер на Python, чтобы Ctrl + C не заставлял мой сканер запускаться заново при следующем запуске, мне нужно сохранить обработчик в текстовом файле (по одному элементу в строке) и обновить на каждой итерации операция обновления должна быть очень быстрой. Чтобы не изобретать велосипед, я спрашиваю, есть ли установленный модуль для этого?

Ответы [ 4 ]

4 голосов
/ 10 декабря 2008

В качестве альтернативы вы можете настроить функцию выхода и закрепить деку при выходе.

Функция выхода
Рассол

1 голос
/ 10 декабря 2008

Я не уверен, правильно ли я понял вопрос, мне просто любопытно, поэтому вот несколько вопросов и предложений:

Планируете ли вы поймать прерывание Ctrl + C и выполнить команду deque? Что произойдет, если сканер выйдет из строя по какой-либо произвольной причине, такой как необработанное исключение или сбой? Вы теряете статус очереди и начинаете все сначала? из документации:

Примечание

Функция выхода не вызывается, когда программа убита сигналом, когда внутренняя ошибка Python является фатальной обнаружено, или когда os._exit () называется.

Что происходит, когда вы снова посещаете тот же URI, поддерживаете ли вы посещенный список или что-то в этом роде?

Я думаю, что вы должны поддерживать некоторую информацию о посещении и сеансе / статусе для каждого URI, который вы сканируете. Вы можете использовать информацию о посещении, чтобы решить сканировать URI или нет при следующем посещении того же URI. Другая информация - информация о сеансе - для последнего сеанса с этим URI поможет в подборе только добавочного материала, и если страница не изменяется, нет необходимости подбирать ее, сохраняя некоторые затраты на ввод-вывод в дБ, дубликаты и т. Д.

Таким образом, вам не придется беспокоиться о ctrl + C или сбое. Если сканер по какой-либо причине отключается, скажем, после сканирования сообщений 60 КБ, когда осталось еще 40 КБ, следующий раз, когда сканер заполняет очередь, хотя очередь может быть огромной, но сканер может проверить, посетил ли он уже URI или нет, и каково было состояние страницы при ее сканировании - оптимизация - требует ли страница нового захвата, поскольку она изменилась или нет.

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

1 голос
/ 10 декабря 2008

Вы можете использовать pickle для сериализации ваших списков.

0 голосов
/ 10 декабря 2008

Некоторые вещи, которые приходят мне в голову:

  • оставить дескриптор файла открытым (не закрывайте файл каждый раз, когда вы что-то пишете)
  • или запишите файл каждые n элементов и поймайте сигнал закрытия, чтобы записать текущие неписанные элементы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...