Ho sviluppato un'utilità che utilizza python/cython che ordina i file CSV e genera statistiche per un client, ma richiamare pool.map sembra sollevare un'eccezione prima che la funzione mappata abbia la possibilità di eseguire . L'ordinamento di un piccolo numero di file sembra funzionare come previsto, ma quando il numero di file cresce a 10, ottengo il seguente IndexError dopo aver chiamato pool.map. Qualcuno capita di riconoscere l'errore qui sotto? Qualsiasi aiuto è molto apprezzato.Python multiprocessing pool.map genera IndexError
Mentre il codice è sotto NDA, il caso d'uso è abbastanza semplice:
codice di esempio:
def sort_files(csv_files):
pool_size = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=pool_size)
sorted_dicts = pool.map(sort_file, csv_files, 1)
return sorted_dicts
def sort_file(csv_file):
print 'sorting %s...' % csv_file
# sort code
uscita:
File "generic.pyx", line 17, in generic.sort_files (/users/cyounker/.pyxbld/temp.linux-x86_64-2.7/pyrex/generic.c:1723)
sorted_dicts = pool.map(sort_file, csv_files, 1)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 227, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 528, in get
raise self._value
IndexError: list index out of range
il traceback si mostra contiene un diverso varia nome ('ordered_dict') di quello nel tuo esempio di codice (' results'), che suggerisce che non stai pubblicando il codice reale che viene eseguito e genera l'errore. – BrenBarn
Typo da parte mia - la variabile dei risultati proveniva da una funzione molto simile che calcola le statistiche. Ho corretto l'errore di battitura. – Cryo