Помощник
|
Как убрать дубли по ключу в большом файле? |
prolisk
|
Сообщение
#1
|
||
|
|
||
|
|||
k0ttee |
21.10.2019, 3:24;
Ответить: k0ttee
Сообщение
#2
|
|
А прождать (8/1,5)*2=10,6666666667 дней нельзя?
Разделить файл на части и перемалывать их (сколько частей - столько потоков). Затем придётся сравнить части между собой. Если в частях будет убрано много дублей, последнее сравнение "всех со всеми" пройдёт быстрее. Распараллелить можно на несколько частей в компе, ноуте, сервере... [off]Однажды я парсил сайт на миллион страниц: там было от 000 000 до 999 999. Начал с домашнего компа (молотил от 000 000 вперёд), затем добавил в работу VDS (молотил от 999 999 назад), потом запустил ещё потоки от середины. Процессы шли несколько суток.[/off] -------------------- btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9 |
|
|
prolisk
|
Сообщение
#3
|
|
(k0ttee) Затем придётся сравнить части между собой. думал об этом, но сильно ли быстрее будет? (k0ttee) А прождать (8/1,5)*2=10,6666666667 дней нельзя? будет больше дней, т.к. массив увеличивается с каждый уникальным значением, и каждый раз сравнивается с большим количеством элементов. Поэтому срок будет больше. Первый 1,5 млн за 2 суток, последний 1,5 млн больше будет (+пару млн для сравнения). Добавлено спустя 1 час 32 минуты 1 секунду: Огромное спасибо ребятам из toster, немало решений дали. Одно из рабочих (вроде все как надо, по времени до 1 минуты): from functools import lru_cache
import re def main(): @lru_cache(maxsize=None) def process(title): fo.write(line) #regex = re.compile('"title": "(\d+)"') #regex = re.compile('"title": "([a-zA-Z0-9а-я А-Я]+)(\d*)"') regex = re.compile('"title": "(.*?)"') with open(r'C:\Users\User\Downloads//json3.json', 'r', encoding='utf-8') as fi, open(r'd:/output.json', 'a', encoding='utf-8') as fo: for line in fi: matchobj = regex.search(line) if matchobj: process(matchobj.group(1)) main() -------------------- Блог вебмастера. Добавь свой сайт в белый каталог |
|
|
prolisk
|
Сообщение
#4
|
|
|
Апну немного тему.
Когда сделал задачу, я оставил "работать" свой скрипт, чтобы посмотреть за сколько же он отработает. В общем, за 5 суток прошло чуть более 2млн строк. Я его закрыл (отменил). А тот скрипт все 8+млн отработал за пару минут :)
-------------------- Блог вебмастера. Добавь свой сайт в белый каталог |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Большие ставки для кликов в Я.Директ. Как удешевить? | 2 | rownong27 | 1122 | 26.3.2024, 14:13 автор: knezevolk |
|
Как вы бросили работу и перешли на заработок с сайтов? | 12 | uahomka | 2293 | 25.3.2024, 6:52 автор: Skyworker |
|
Как отозвать банковский платеж фрилансеру? | 28 | metvekot | 3920 | 25.3.2024, 6:34 автор: Skyworker |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 23 | freeax | 3644 | 24.3.2024, 20:55 автор: Liudmila |
|
Через какой браузер и как можно найти в кэшэ браузера видео | 10 | Room | 1939 | 23.3.2024, 7:41 автор: Room |
Текстовая версия | Сейчас: 29.3.2024, 9:42 |