Saltar al contenido

usando papa parse para archivos csv grandes

Después de mucho luchar ya dimos con la respuesta de este conflicto que muchos usuarios de nuestro sitio web presentan. Si tienes algo que aportar no dudes en compartir tu información.

Solución:

Probablemente lo esté usando correctamente, ¡es solo que el programa tardará un tiempo en analizar las 100k líneas!

Este es probablemente un buen escenario de caso de uso para Web Workers.

NOTA: Según la respuesta de @tomBryer a continuación, Papa Parse ahora tiene soporte para Web Workers listo para usar. Este puede ser un mejor enfoque que hacer rodar a su propio trabajador.

Si nunca los ha usado antes, este sitio ofrece un resumen decente, pero el key parte es:

Web Workers imita los subprocesos múltiples, lo que permite ejecutar secuencias de comandos intensivas en segundo plano para que no bloqueen la ejecución de otras secuencias de comandos. Ideal para mantener la capacidad de respuesta de la interfaz de usuario y, al mismo tiempo, realizar funciones que requieren un uso intensivo del procesador.

La cobertura del navegador también es bastante decente, siendo IE10 e inferior los únicos navegadores semimodernos que no lo admiten.

Mozilla tiene un buen video que muestra cómo los trabajadores web también pueden acelerar la velocidad de fotogramas en una página.

Intentaré obtener un ejemplo de trabajo con trabajadores web para usted, pero también tenga en cuenta que esto no acelerará el script, solo hará que se procese de forma asíncrona para que su página siga respondiendo.

EDITAR:

(NOTA: si desea analizar el CSV dentro del trabajador, probablemente necesitará importar el script Papa Parser dentro del trabajador.js usando el importScript función (que se define globalmente dentro del subproceso de trabajo). Consulte la página de MDN para obtener más información al respecto).

Aquí está mi ejemplo de trabajo:

csv.html




  
  



  
  

trabajador.js

self.addEventListener('message', function(e) 
    console.log('worker is running');

    var file = e.data.file;
    var reader = new FileReader();

    reader.onload = function (fileLoadedEvent) 
        console.log('file loaded, posting back from worker');

        var textFromFileLoaded = fileLoadedEvent.target.result;

        // Post our text file back from the worker
        self.postMessage(textFromFileLoaded);
    ;

    // Actually load the text file
    reader.readAsText(file, "UTF-8");
, false);

GIF de su procesamiento, toma menos de un segundo (todo se ejecuta localmente)

GIF de ejemplo de trabajo

A partir de la v5, PapaParse ahora se ha integrado en WebWorkers.

A continuación se muestra un ejemplo simple de invocación del trabajador dentro de Papaparse.

Papa.parse(bigFile, 
    worker: true,
    step: function(results) 
        console.log("Row:", results.data);
    
);

No es necesario volver a implementar si tiene su propio trabajador con PP, pero para proyectos futuros, a algunos les puede resultar más fácil usar la solución de PapaParse.

Te mostramos reseñas y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *