Python Chunking CSV File Multiproccessing
Estoy usando el siguiente código para dividir un archivo CSV en varios fragmentos (procedentes deaquí)
def worker(chunk):
print len(chunk)
def keyfunc(row):
return row[0]
def main():
pool = mp.Pool()
largefile = 'Counseling.csv'
num_chunks = 10
start_time = time.time()
results = []
with open(largefile) as f:
reader = csv.reader(f)
reader.next()
chunks = itertools.groupby(reader, keyfunc)
while True:
# make a list of num_chunks chunks
groups = [list(chunk) for key, chunk in
itertools.islice(chunks, num_chunks)]
if groups:
result = pool.map(worker, groups)
results.extend(result)
else:
break
pool.close()
pool.join()
Sin embargo, parece que la cantidad de fragmentos siempre permanece constante, independientemente de la cantidad de fragmentos que elijo usar. Por ejemplo, si elijo tener 1 o 10 fragmentos, siempre obtengo esta salida al procesar un archivo de muestra. Idealmente, me gustaría dividir un archivo para que se distribuya equitativamente.
Tenga en cuenta que el archivo real que estoy fragmentando tiene más de 13 millones de filas, por lo que lo estoy procesando pieza por pieza. Eso es un deber!
6
7
1
...
1
1
94
--- 0.101687192917 seconds ---