Читать большой файл параллельно?

У меня есть большой файл, который мне нужно прочитать и создать словарь. Я бы хотел, чтобы это было как можно быстрее. Однако мой код на python слишком медленный. Вот минимальный пример, который показывает проблему.

Сначала сделайте поддельные данные

paste <(seq 20000000) <(seq 2 20000001)  > largefile.txt

Теперь вот минимальный кусок кода на Python для чтения и создания словаря.

import sys
from collections import defaultdict
fin = open(sys.argv[1])

dict = defaultdict(list)

for line in fin:
    parts = line.split()
    dict[parts[0]].append(parts[1])

Тайминги:

time ./read.py largefile.txt
real    0m55.746s

Однако можно прочитать весь файл намного быстрее, так как:

time cut -f1 largefile.txt > /dev/null    
real    0m1.702s

Мой процессор имеет 8 ядер, возможно ли распараллелить эту программу на python, чтобы ускорить ее?

Одной из возможностей может быть чтение в больших порциях ввода и последующее параллельное выполнение 8 процессов на разных неперекрывающихся подчастях, делая словари параллельно из данных в памяти, а затем считывая их в другом большом порции. Возможно ли это как-то в python, использующем многопроцессорность?

Обновить, Поддельные данные были не очень хорошими, так как они имели только одно значение на ключ. Лучше

perl -E 'say int rand 1e7, $", int rand 1e4 for 1 .. 1e7' > largefile.txt

(Относится кЧитай в большом файле и составь словарь .)

Ответы на вопрос(6)

Ваш ответ на вопрос