Делает ли urllib.urlopen () нечто подобное (с использованием кеша на диске)?
Операционная система.При использовании сетевого API, такого как urllib
, операционная система и сетевая карта будут выполнять низкоуровневую работу по разбиению данных на небольшие пакеты, отправляемые по сети, и для приема входящих пакетов.Они хранятся в кеше, так что приложение может абстрагироваться от концепции пакета и делать вид, что оно будет отправлять и получать непрерывные потоки данных.
Насколько велика разница в производительности между urllib.urlopen().readline()
иfile().readline()
?
Трудно сравнить эти два.Для urllib
это зависит от скорости сети, а также от скорости сервера.Даже для локальных серверов существуют некоторые издержки абстракции, поэтому обычно из сетевого API-интерфейса читать медленнее, чем напрямую из файла.
Для фактического сравнения производительности вам придется написать тестовый скрипти сделай замер.Тем не менее, почему вы вообще беспокоитесь?Вы не можете заменить одно другим, поскольку они служат разным целям.
Каков наилучший способ обработки файла, открытого через urllib.urlopen()
?Это быстрее обрабатывать это построчно?Или я должен загрузить несколько строк (~ 50) в список, а затем обработать список?
Поскольку узким местом является скорость сетевого подключения, было бы неплохо обработать данные в ближайшее время.как вы поняли.Таким образом, операционная система может кэшировать больше входящих данных «в фоновом режиме».
Нет смысла кэшировать строки в списке перед их обработкой.Ваша программа будет просто ждать, пока поступит достаточно данных, в то время как она уже может делать что-то полезное.