Я пишу искателя в Python, чтобы Ctrl + C не приводил к запуску моего искателя в следующем запуске, мне нужно сохранить обработчик deque в текстовом файле (по одному элементу в строке) и обновить его каждая итерация, операция обновления должна быть очень быстрой. Чтобы не изобретать колесо, я спрашиваю, есть ли установленный модуль для этого?
В качестве альтернативы вы можете настроить функцию выхода и рассортировать deque при выходе.
Я не уверен, правильно ли понял вопрос, мне просто интересно, так что вот несколько вопросов и предложений:
Планируете ли вы поймать прерывание Ctrl + C и сделать deque? Что произойдет, если искатель сбой по какой-либо причине, например, необработанное исключение или сбой? Вы теряете статус очереди и начинаете заново? из документации:
Примечание
Функция выхода не вызывается, когда программа убивается сигналом, когда возникает внутренняя ошибка Python обнаружено, или когда os._exit() является называется.
Что произойдет, если вы снова посетите один и тот же URI, поддерживаете ли вы посещаемый список или что-то еще?
Я думаю, что вы должны поддерживать какую-то информацию о посещении и сеансе/статус для каждого просматриваемого вами URI. Вы можете использовать информацию о посещении, чтобы решить обходить URI или нет, когда вы посещаете тот же URI в следующий раз. Другая информация - информация о сеансе - для последнего сеанса с этим URI поможет в сборе только инкрементного материала, и если страница не изменяется, не нужно ее поднимать, экономя некоторые затраты на ввод-вывод, дубликаты и т.д.
Таким образом вам не придется беспокоиться о ctrl + C или сбое. Если искатель спускается по какой-либо причине, скажем, после сканирования 60K сообщений, когда осталось еще 40K, в следующий раз, когда искатель заполняет очередь, хотя очередь может быть огромной, но искатель может проверить, не посетил ли он URI или не и каково было состояние страницы при ее обходе - оптимизация - требуется ли страница для новой записи, которую она изменила или нет.
Надеюсь, это поможет.
Вы можете использовать pickle для сериализации ваших списков.
Некоторые вещи, которые приходят мне на ум: