import ftplib
import time
ftp = ftplib.FTP("localhost", "mph")
t0 = time.time()
with open('big.gz.sav', 'wb') as f:
ftp.retrbinary('RETR ' + '/Temp/big.gz', f.write)
t1 = time.time()
ftp.close()
ftp = ftplib.FTP("localhost", "mph")
t2 = time.time()
ftp.retrbinary('RETR ' + '/Temp/big.gz', lambda x: x)
t3 = time.time()
print "saving file: %f to %f: %f delta" % (t0, t1, t1 - t0)
print "not saving file: %f to %f: %f delta" % (t2, t3, t3 - t2)
Так что, может быть, не в 10 раз. Но все мои попытки сохранения файла превышают 160 с на ноутбуке с ядром 1,8 ГГц, ядром i7 и 8 ГБ оперативной памяти (должно быть излишним) под управлением Windows 7. Нативный клиент делает это на 100 с. Без сохранения файла мне чуть меньше 70 лет.
Я пришел к этому вопросу, потому что видел низкую производительность с ftplib на Mac (я перезапущу этот тест снова, как только у меня снова будет доступ к этой машине). Хотя асинхронизация с записями может быть хорошей идеей в этом случае, в реальной сети, я подозреваю, это принесет гораздо меньше выгоды.