Я использую следующий код для разделения CSV файла на несколько фрагментов (из здесь)
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()
Однако, кажется, что количество кусков всегда остается постоянным, независимо от количества кусков, которые я предпочитаю использовать. Например, независимо от того, выбираю ли я 1 или 10 кусков, я всегда получаю этот вывод при обработке образца файла. В идеале я хотел бы записать файл таким образом, чтобы он был справедливо распределен.
Обратите внимание: реальный файл, который я разделяю, составляет более 13 миллионов строк, поэтому я обрабатываю его по частям. Это обязательно!
6
7
1
...
1
1
94
--- 0.101687192917 seconds ---