Многопоточность для подсчета повторений символов в файлеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Многопоточность для подсчета повторений символов в файле

Сообщение Anonymous »

Я пытаюсь использовать многопоточность в Python, чтобы просмотреть большой файл текста (символов) и подсчитать повторения одних и тех же символов. По сути, это воссоздание метода string.count(char), но вместо просмотра строки он будет проходить через файл и проверять наличие повторений. Поскольку файл может быть очень большим, я пытаюсь использовать модули Python Threading, чтобы иметь несколько читателей в файле, чтобы я мог использовать несколько потоков, которые учитываются в разных частях файла, так что каждый поток отвечает за определенную часть файла. файл.
Я создал следующие вспомогательные методы, которые помогут мне в этом:

Код: Выделить всё

#get a list of positions so that the file can be divided to chunks of chunksize
def getpos(fnom, chunksize):
pos = []
curr = 0;
read = 0

f = open(fnom, 'r')
while True:
ch = f.read(1)
curr = curr+1
read = read +1
if not ch:
pos.append(curr-1)
break
if(read >= chunksize):
pos.append(curr)
read = 0
return pos

#find recurrences of b in chunks of the file, starting at pos and with a max size of each chunk being csize
def counter(f, pos, csize, b):
sub = ''
curr = 0
end = pos+csize

f = open(f, 'r')
while True:
ch = f.read(1)
curr = curr+1
#print(curr)
if not ch:
break
if(curr >= pos and curr < end):
sub += ch

recurr = sub.count(b)
return recurr
Таким образом, counter() может анализировать фрагменты файла и получать повторения в этом фрагменте, которые могут выполняться в потоке. А getpos() может помочь в настройке разделения файла на фрагменты, после чего каждый поток сможет получить фрагмент для обработки.
Будет ли это работать:

Код: Выделить всё

def total_counter(fnom, b):
threads = []
pos = getpositions(fnom, 8)
for i in pos:
t = threading.Thread(target=chunk_counter, args=(fnom, i, 8, b))
threads.append(t)
t.start()
Как мне настроить его, чтобы я мог использовать описанное выше для методов с несколькими потоками и обрабатывать файл для подсчета повторений символа?

Подробнее здесь: https://stackoverflow.com/questions/436 ... -in-a-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как генерировать все комбинации набора символов без повторений?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Мерсенн против Ранда: почему при использовании Мерсенна я получаю больше последовательных повторений по сравнению с Ранд
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Перебор списка вперед и назад без повторений
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Итерация над списком взад -вперед без повторений
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Лучшие практики для внедрения сроков и повторений для GRPC [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»