В настоящее время я работаю над проектом очистки данных, который требует от меня загрузки и сохранения данных в каждом l oop. Вы можете спросить, почему я это сделал? Ну, прежде чем я очистил данные без загрузки и сохранения между каждыми l oop и потерял все мои данные, если скрипт потерпел крах в любом месте до последней итерации (что происходило каждый раз из-за тайм-аута, странного URL или чего-либо, что вы можете себе представить).
В целом метод, применяемый сейчас, работает нормально, но после примерно 20 000 итераций мои файлы хранения увеличиваются до длины ~ 90 МБ, в результате чего сценарий становится все медленнее и медленнее, что вынуждает меня создавать новый файл сохранения данных , Код ниже показывает основные функции моего скрипта.
import numpy as np
#List with URLS to scrape (220k URLS)
URLS = np.load("/some_directory/URLS.npy").tolist()
#Already checked URLS
Checked_URLS=np.load("/some_directory/checked_URLS.npy").tolist()
#Perform scraping and add new URL to checked list
for i in URLS:
if i not in Checked_URLS:
Checked_already.append(i)
np.save("some_directory/checked_URLS.npy", Checked_already)
NEW_DATA=Bunch_of_scraping_code
#Load numpy list with data collected from previous URLS
#Append new scraping data and save list
FOUND_DATA=np.load("/some_directory/FOUND_DATA.npy", allow_pickle=True).tolist()
FOUND_DATA.append(NEW_DATA)
np.save("some_directory/FOUND_DATA.npy", LOT_DATA)
Я уверен, что должен быть еще способ pythoni c, при котором не требуется загружать все списки в python каждый l oop? Или, возможно, другой способ, который не требует написания вообще? Я записываю свои списки в .npy, потому что, насколько мне известно, это самый эффективный способ разбора файлов больших списков.
Я пытался сохранить свои данные непосредственно в pandas, но это сделало все намного хуже и медленнее. Вся помощь будет оценена!