我試圖通過FTP連接使用Python的ftplib
模塊從文件中檢索行。大約需要10分鐘才能讀取大小爲1 GB的文件。我想知道是否有其他方式以更快的方式讀取這些行。python ftp檢索行 - 性能問題
我應該包括一些代碼來證明我在做什麼:
ftp.HostName = 'xxx'
ftp.Userid = 'xxx' #so on
ftp.conn.retrlines('RETR ' + fileName, process)
我試圖通過FTP連接使用Python的ftplib
模塊從文件中檢索行。大約需要10分鐘才能讀取大小爲1 GB的文件。我想知道是否有其他方式以更快的方式讀取這些行。python ftp檢索行 - 性能問題
我應該包括一些代碼來證明我在做什麼:
ftp.HostName = 'xxx'
ftp.Userid = 'xxx' #so on
ftp.conn.retrlines('RETR ' + fileName, process)
你能告訴你在做什麼,一些最起碼的代碼示例? FTP用於傳輸文件, ,因此從遠程文件中檢索行並不一定像整個傳輸文件一次並在本地讀取一樣有效。
除此之外,你有沒有驗證,你可以在這個連接上更快?
編輯:如果您嘗試以下,這是不是有點快,那麼你通過你的操作系統或者連接限制:
ftp.conn.retrbinary('RETR ' + fileName, open(temp_file_name, 'wb').write)
這裏的假設是,該FTP文本模式可能會稍差高效的(在服務器端),這可能是錯誤的或者是微不足道的相關性。
檢索遠程資源通常受您的帶寬約束,而FTP協議在使用這些資源方面做得不錯。
你確定你沒有飽和你的網絡連接嗎? (什麼是客戶端運行FTPLIB和服務器你是從網上下載的網絡鏈接?)
回信封計算的:
1GB/10分鐘=〜1.7 MB /秒=〜13 Mbps的
所以您正在下載13兆字節。對於遠程DSL /有線/廣域網連接而言,這是相當不錯的速度,但如果這是一個本地網絡,那麼顯然會很低。
+1爲一個很好的答案。我建議你使用適當的大小寫,因爲這是Stack Overflow中的一般做法。 –
fixed caps .. too used to irc :) –
so'.retrlines('RETR'+ fileName,callback)'是檢索行的最快方法嗎? – bbekdemir
不是。是什麼讓你覺得這是你的Python應用程序很慢?你有沒有嘗試其他的FTP客戶端,並測量他們的時間? –