Tengo un tipo de archivo txt muy grande de '{some_string}|{repeated_value}', más de 50 millones de líneas.
2312|dog 4214215|cat 42141241|dog fasfsa|cat 4214214|bird 42142141|cat fasfsa|bird fsafasf|dog 421jdsa|tigerNecesito segmentar por su valor después de "|" símbolo. Algo como esto.
2312|dog 42141241|dog fsafasf|dog 4214215|cat fasfsa|cat 42142141|cat 4214214|bird fasfsa|bird 42jdsa|tigerProblema: es necesario tomar uno o n elementos de cada segmento y alimentarlos para que funcionen hasta que haya 0 elementos en cada segmento. (Round Robin)
Ejemplo de pitón:
#Segmented lines dog = ['2312|dog', '42141241|dog', 'fsafasf|dog', 'dsafas|dog'] cat = ['4214215|cat', 'fasfsa|cat', '42142141|cat'] bird = ['4214214|bird', '4214214|bird'] tiger = ['442jssa|tiger'] animals = [dog, cat, bird, tiger] # Round Robin while len(animals): animal_list = animals.pop(0) if len(animal_list) == 0: continue line = animal_list.pop(0) print(line) animals.append(animal_list)Ejemplo JS:
const dog = ['2312|dog', '42141241|dog', 'fsafasf|dog', 'dsafas|dog'] const cat = ['4214215|cat', 'fasfsa|cat', '42142141|cat'] const bird = ['4214214|bird', '4214214|bird'] const tiger = ['442jssa|tiger'] const animals = [dog, cat, bird, tiger] // Round Robin while (animals.length) { let animal_list = animals.pop(0) if (animal_list.length == 0) { continue } let line = animal_list.pop(0) console.log(line) animals.push(animal_list) }Producción:
2312|dog 4214215|cat 4214214|bird 442jssa|tiger 42141241|dog fasfsa|cat 4214214|bird fsafasf|dog 42142141|cat dsafas|dogNo puedo cargar todas las líneas en la memoria, hay miles de "animales".
Se me ocurrió una sola solución, leer el archivo línea por línea, para cada animal crear una tabla en db. Cree un trabajador que llene la lista de "animales" cuando len < LIMIT e implemente round robin. ¿Alguna otra solución?