2011-09-09 2 views
1

ftplib python 모듈을 사용하여 FTP 연결을 통해 파일에서 행을 검색하려고합니다. 1GB 크기의 파일을 읽는 데 약 10 분이 걸립니다. 빠른 방법으로 줄을 읽는 다른 방법이 있는지 궁금합니다.python ftp에서 행 검색 - 성능 문제

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

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

아니요. 귀하의 파이썬 앱이 느린 이유는 무엇입니까? 다른 FTP 클라이언트를 사용해 보았고 시간을 측정 했습니까? –

답변

0

당신이하고있는 일의 최소한의 코드 예제를 보여줄 수 :

나는 내가하는 일 보여주는 몇 가지 코드를 포함해야? FTP는 파일을 전송하기위한 것으로 이므로 원격 파일에서 행을 검색하는 것이 파일을 한 번만 전송하고 로컬에서 읽는 것보다 반드시 효율적이지는 않습니다.

이 외에도이 연결에서 수 있습니까?이 빠르다는 것을 확인 했습니까?

편집 : 다음을 시도하고 그렇지 조금 더 빠른 경우에, 당신은 당신의 OS 또는 연결에 의해 제한됩니다 FTP 텍스트 모드가 다소 작을 수 있습니다 것을

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

여기 가정, 효율적인 (서버 측에서) 거짓이거나 관련성이 낮은 것일 수 있습니다.

1

일반적으로 원격 리소스를 검색하는 것은 대역폭에 의해 제한되며 FTP 프로토콜은이 리소스를 모두 사용합니다.

네트워크 연결이 원활하지 않습니까? (클라이언트 실행 FTPLIB와 서버 당신이에서 다운로드 사이의 네트워크 링크는 무엇인가?) 봉투 CALC의

돌아 가기 :

1기가바이트/10 분 = ~ 1.7 MB/초 = ~ 13 Mbps의

그래서

당신은 13 메가 비트에서 다운로드 중입니다. 그것은 원격 DSL/케이블/WAN 연결을위한 적당한 속도이지만, 이것이 모두 로컬 네트워크 인 경우 분명히 매우 낮습니다.

+0

+1 좋은 답변입니다. 스택 오버플로 (Stack Overflow)의 일반적인 방법이므로 적절한 대문자 사용을 권장합니다. –

+0

fixed caps .. irc에 너무 익숙하다. :) –

+0

그래서'.retrlines ('RETR'+ fileName, callback)'은 줄을 검색하는 가장 빠른 방법이다. – bbekdemir