Мне нужно объединить два текстовых файла вместе и создать из него новый список. Первый содержит URL-адреса и другие urlpaths/folder, которые должны применяться к каждому URL-адресу. Im Работа со списками, и это очень медленно, потому что его грубо около 200 000 предметов.Список Python Append Slow?
Пример:
urls.txt:
http://wwww.google.com
....
paths.txt:
/abc
/bce
....
Позже, после того, как цикл закончен, должен быть новый список с
http://wwww.google.com/abc
http://wwww.google.com/bce
Код Python :
URLS_TO_CHECK = [] #defined as global, needed later
def generate_list():
urls = open("urls.txt", "r").read().splitlines()
paths = open("paths.txt", "r").read().splitlines()
done = open("done.txt", "r").read().splitlines() #old done urls
for i in range(len(urls)):
for x in range(len(paths)):
url = re.search('(http://(.+?)....)', urls[i]) #needed
url = "%s%s" %(url.group(1), paths[x])
if url not in URLS_TO_CHECK:
if url not in done:
URLS_TO_CHECK.append(url) ##<<< slow!
Уже прочитал некоторые другие темы, о map
функции, отключить gc
, но не может использовать map
функции с моей программой. и отключить gc
действительно не помогло.
Попробуйте изменить URLS_TO_CHECK к набору() вместо этого, пока упорядочение не имеет значения для вас. – Ben
Вы также можете сделать 'done' набор, который ускорит тест членства. Прошли ли какие-либо профилирования? – jonrsharpe
У вас даже «профиль» ваш код? Вы создаете множество списков ('range (len (url)) и т. Д.), Читайте все файлы в памяти вместо их итерации по ним, и, честно говоря, я думаю, что« append »здесь не является узким местом. –