Это самая быстрая вещь, которую я нашел, используя чистый python. Вы можете использовать любой объем памяти, который вы хотите, установив буфер, хотя 2 ** 16 кажется приятным пятном на моем компьютере.
from functools import partial
buffer=2**16
with open(myfile) as f:
print sum(x.count('\n') for x in iter(partial(f.read,buffer), ''))
Я нашел ответ здесь Почему строки чтения из stdin намного медленнее в C ++, чем Python? и немного изменили его. Его очень хорошо читать, чтобы понять, как быстро считать строки, хотя wc -l
все еще примерно на 75% быстрее, чем что-либо еще.