2013-12-02 15 views
1

В настоящее время я пытаюсь прочитать 150 миллионов строк (из файла данных с информацией о биопоследовательности) с использованием Python. В настоящее время он читает 20 000 строк в секунду, что займет около полутора часов. Я должен прочитать 20 из этих файлов. Учитывая, что Python является языком очень высокого уровня, было бы лучше использовать Java для чтения файлов или разницу во времени, не столь значительную, чтобы гарантировать переход на другой язык?Как улучшить производительность выполнения программы чтения файлов

текущий код я использую:

lines_hashed = 0 
with open(CUR_FILE) as f: 
    for line in f: 
     cpg = line.split("\t") 
     cpg_dict[cpg[0]] = ....data.... 
     print lines_hashed 
     lined_hashed += 1 

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

Спасибо.

+5

Закомментируйте заявление о печати, вероятно, будет намного быстрее .... –

+3

Зачем вам нужно «печатать строки» в каждой строке? Почему не каждые 100 000 или 1 000 000 строк? 'if lines_hashed% 100000 == 0: print lines_hashed'. Еще лучше, используйте 'for i, line in enumerate (f)' вместо 'lines_hashed'. – wflynny

+0

не уверен в python, но некоторые классы в java на самом деле очень медленны, когда приходится читать ** строки **, потому что они читают 1 символ за раз и сравнивают его с \ n, создавая stringbuffer, добавляя все символы 1 после другого. – njzk2

ответ

4
  1. Печать на экране дорогая по сравнению с чтением диска. Если вы должны проверять производительность по мере продвижения, распечатывайте только 1000 строк и более.
  2. Что касается использования других языков, то почти все языки призывают операционную систему выполнять настоящую работу.
+0

Я попробую эти изменения, спасибо! –

+0

Итератор файлов CPython - это самый быстрый способ доставки строки за раз: реализация итератора «читается навалом» под обложками. –

+0

@TimPeters Спасибо за исправление, предложение удалено. – cmd

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