Звучит как работа для генераторов!
Представьте, что у вас есть бесконечный текстовый файл ... давайте теперь назовем его test.txt open('test.txt').read()
приведет к зависанию машины и в конечном итоге к аварийному завершению, так почему бы не выдать строку за строкой в этом бесконечном потоке в генераторе, например
def yield_line(file):
with open(file) as inp:
for line in inp:
yield line
теперь, когда инициализированный yield_line становится итеративным объектом, так что это становится допустимым
out = open('out.txt')
for line in yield_line('test.txt'):
out.write(line.replace('1','2'))
Теперь учтите, что URL-адрес может работать так же, как и файл, вы можете просто указать строку для строки в URL-адресе
def yield_url(url):
with urllib.urlopen(url) as inp:
for line in inp:
yield line
Edit:
Пример тайм-аута
out = open('out.txt')
for count, line in enumerate(yield_line('test.txt')):
if count == 444: #timeout value :D
break
out.write(line.replace('1','2'))