2015-04-10 4 views
0

У меня очень большой файл txt.file (около 20G), могу ли я использовать многопроцессорный процесс для чтения всего файла вместо того, чтобы читать его с первой строки до последней?многопроцессорное чтение одного файла в python

Например, у меня есть 4 процесса, и я сначала подсчитываю строки файла (предположим, что у него есть 2000 строк). Процесс 1 читает строку 1 ~ 500, а процесс 2 читает 501 ~ 1000, я хочу знать, возможно ли это (если один процесс читает, может ли другой процесс читать одновременно?). Возможно, этот вопрос касается того, как разделить файл txt.

Если все в порядке. Как это сделать? Код для одного процесса файла, как это:

file = open(file_path,"r",encoding = 'utf-8') 
alllines = file.readlines() 
file.close() 

for line in alllines: 
    to do... 

Я понятия не имею, как изменения в alllines стать предложения numbers.Any? Заранее спасибо.

+0

В вашем вопросе много «может быть». Какой у Вас вопрос? Что вы хотите делать с содержимым файла? –

+0

Зачем вам нужен многопроцессор? Эффективность? – BlackMamba

+2

Это можно сделать, но дисковый ввод-вывод - это последовательная операция; вы не можете одновременно просматривать несколько потоков/процессов из разных частей диска - считывание дисков закончится прыжком назад и вперед между различными частями файла, в зависимости от того, какой поток активен, что обычно ухудшает производительность, чем если бы вы просто сделали это в одном потоке. – dano

ответ

1

Вы можете попробовать память, сопоставляющую файл. См. Mmap: documentation here

Затем вы можете прочитать файл с помощью задач многопроцессорности, получив доступ к сопоставленному файлу, а не к жесткому диску.

Смежные вопросы