Multiproceso múltiples archivos en una lista

Estoy intentando leer una lista que contiene N números de archivos .csv almacenados en una lista de forma síncrona.

Ahora mismo hago lo siguiente:

importar multiproceso

  1. Lista vacía
  2. Adjuntar lista con listdir de .csv’s
  3. def A () – incluso archivos (lista [:: 2])
  4. def B () – archivos impares (lista [1 :: 2]
  5. Proceso 1 def A ()
  6. Proceso 2 def B ()

    def read_all_lead_files(folder): for files in glob.glob(folder+"*.csv"): file_list.append(files) def read_even(): file_list[::2] def read_odd(): file_list[1::2] p1 = Process(target=read_even) p1.start() p2 = Process(target=read_odd) p2.start() 

¿Hay una forma más rápida de dividir la partición de la lista para procesar la función?

Estoy adivinando aquí a su solicitud, porque la pregunta original no está clara. Ya que os.listdir no garantiza un pedido, os.listdir que sus “dos” funciones son en realidad idénticas y que solo necesita realizar el mismo proceso en varios archivos simultáneamente.

La forma más fácil de hacer esto, según mi experiencia, es hacer girar un Pool , iniciar un proceso para cada archivo y luego esperar. p.ej

 import multiprocessing def process(file): pass # do stuff to a file p = multiprocessing.Pool() for f in glob.glob(folder+"*.csv"): # launch a process for each file (ish). # The result will be approximately one process per CPU core available. p.apply_async(process, [f]) p.close() p.join() # Wait for all child processes to close.