Python FTP получить строки - проблемы с производительностью - PullRequest
1 голос
/ 09 сентября 2011

Я пытаюсь извлечь строки из файла через FTP-соединение, используя модуль ftplib python. Для чтения файла размером 1 ГБ требуется около 10 минут. Мне было интересно, есть ли другие способы более быстрого чтения строк.

Я должен был включить код, чтобы показать, что я делаю:

ftp.HostName = 'xxx'
ftp.Userid = 'xxx' #so on

ftp.conn.retrlines('RETR ' + fileName, process)

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Получение удаленных ресурсов обычно связано с вашей пропускной способностью, и протокол FTP отлично справляется со всем этим.

Вы уверены, что не насыщаете свое сетевое соединение?(Какова сетевая связь между клиентом, на котором запущен ftplib, и сервером, с которого вы скачиваете?)

Оборот конверта:

1 ГБ / 10 минут = ~ 1,7 МБ / с = ~ 13 Мбит / с

Итак, вы загружаете на 13 мегабит.Это приемлемая скорость для удаленного соединения DSL / Cable / WAN, но, очевидно, довольно низкая, если это все локальная сеть.

0 голосов
/ 09 сентября 2011

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

Помимо этого, вы убедились, что вы Может ли быть быстрее в этом соединении?

РЕДАКТИРОВАТЬ: если вы попробуете следующее, и это не немного быстрее, то вы ограничены вашей ОС или подключением:

ftp.conn.retrbinary('RETR ' + fileName, open(temp_file_name, 'wb').write)

Предполагается, что текстовый режим FTP может быть несколько менее эффективным (на стороне сервера), что может быть ложным или иметь незначительную актуальность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...