Всем доброго дня!
Уважаемые Питонщики, мне необходима Ваша помощь.
Имеется большой текстовый файл, размером 4Gb. В нем содержатся строки вида
sid0014 | http://gagaga.com/num=0310103&id=22556756 | pid=2346786
sid0048 | http://gagaga.com/num=045345345&id=22553425 | pid=567456
sid0093 | http://gagaga.com/num=126654&id=225534756 | pid=867546433
sid00235345634 | http://gagaga.com/num=0310103&id=22556756 | pid=3425457785343
….
Таких строк в файле более 4 млн. штук.
Мне нужно найти все строки с совпадающими ссылками и объединить первые и последние значения (разделитель “|”)
Например из строчек выше нужно получить
sid0014, sid00235345634 | http://gagaga.com/num=0310103&id=22556756 | pid=2346786, pid=3425457785343
т.к ссылка в верхней строке, совпадает с нижней.
В общем моих знаний питона хватило на то, чтобы написать цикл в цикле. Т.е. на каждой из 4 млн. строк (итераций) мне приходится пробегаться по всем строкам и выбирать нужные мне данные.
Немного оптимизировал код, теперь при каждой итерации я начинаю проход не с первой строки, а с предыдущей в первом цикле (т.е. отбрасываю то, что уже обработано). Но это не намного ускорило код.
Теперь подсчеты:
В среднем каждая моя итерация основного цикла обрабатывается 40 сек. Т.е. чтобы отработать 4 000 000 итераций мне нужно примерно 44 444 часов. (((
Докупил оперативки, думал загружать весь файл в список и потом с ним работать, но скорость почему-то не выросла. Вопрос - ПОЧЕМУ? Оперативки 8GB - файл 4GB.
Ребята, выручите! Как правильно устроить циклы для реальной работы. Т.к. Таких файлов у меня будет около 60 штук.
Заранее СПАСИБО!