¿Se puede hacer que la operación de compresión y descompresión sea multiproceso en nodejs?
Si.
... y no puede iniciar varios subprocesos usted mismo ... porque cada archivo zip debe manejarse en un solo subproceso
Sospecho que su premisa es defectuosa. ¿Por qué cree exactamente que un proceso de nodo no puede iniciar varios subprocesos? Aquí hay una aplicación que estoy ejecutando que utiliza el módulo de clúster node.js muy maduro con un proceso principal que actúa como supervisor y dos procesos secundarios que realizan tareas vinculadas de E / S de red y disco.
Como puede ver en la C
columna, cada proceso se ejecuta en un hilo separado. Esto permite que el proceso maestro siga respondiendo a las tareas de comando y control (como generar / cosechar trabajadores) mientras los procesos de trabajo están vinculados a la CPU o al disco. Este servidor particular acepta archivos de la red, a veces los descomprime y los alimenta a través de procesadores de archivos externos. IOW, es una tarea que incluye compresión como la que usted describe.
No estoy seguro de que quieras usar hilos de trabajo basados en este fragmento de los documentos :
Los trabajadores (hilos) son útiles para realizar operaciones JavaScript intensivas en CPU. No ayudarán mucho con el trabajo intensivo de E / S. Las operaciones de E / S asincrónicas integradas de Node.js son más eficientes que los trabajadores.
Para mí, esa descripción grita, "¡crypo!" En el pasado, he generado procesos secundarios al tener que realizar operaciones costosas de criptomonedas.
En otro proyecto, uso el módulo child_process del nodo y pongo en marcha un nuevo proceso hijo cada vez que tengo que comprimir un lote de archivos. Ese servicio en particular ve una lista de ~ 400 archivos con nombres similares process-me-2019.11.DD.MM
y los concatena en un solo process-me-2019-11-DD
archivo. Se tarda un poco en comprimir, por lo que generar un nuevo proceso evita el bloqueo en el hilo principal.