Распараллеливание функций Python с использованием многопроцессорной обработки - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в Python и использую Python 2.7. Я пишу программу для анализа сырых файлов. Я написал функцию, которая вызывает файл и помещает каждые 4 строки в список. Мой файл большой, скажем, 4 ГБ необработанных данных ДНК.

def filerd(f):
           identifier = []
           with open(f,'r') as inputfile:
            count = 1
            for line in inputfile:
              if count%4 == 1:
                identifier.append(line)
                count = count + 1
              else:
                count = count + 1
              return identifier

Теперь, как я могу распараллелить эту функцию, чтобы я мог получить ускорение. Можно ли запустить эту функцию на 5 ядрах моего сервера?

1 Ответ

0 голосов
/ 07 мая 2018

Как я уже упоминал в моем комментарии выше, вы, вероятно, сможете значительно повысить скорость, просто оптимизировав свою функцию. Предлагаю попробовать следующее:

import itertools

def filerd(f):
    with open(f, "r") as inputfile:
        return list(itertools.islice(inputfile, None, None, 4))

Если вам не нужно, чтобы возвращаемое значение было списком, но с итератором все в порядке, вы можете удалить list(). Тогда, скорее всего, самая медленная часть будет загружать данные с диска, что вам все равно нужно делать.

...