2013-06-28 2 views
0

나는 지금 (현재) 10 개의 서브 그룹과 성장하고있는 펄 스크립트를 가지고있다.Perl : 큰 스크립트를 (똑같이) 가장 똑똑하고 빠른 방법으로 만드시겠습니까?

각 서브는 다른 LWP-Call을 만들고 있으며 첫 번째 서브에서 설정 한 변수로 작업하고있다.

각 하위에는 시간이 걸리므로 스크립트를 빠르게 실행할 수있는 현명한 방법을 찾고 있습니다.

무엇을 권하고 싶습니까?

내가해야 :

  • 는 별도의 스크립트에 각각의 서브를 넣어?
  • 한 번에 하위 메뉴를 호출합니다 (첫 번째 제외).
  • 다른 솔루션을 사용합니까 (모름)?

미리 감사드립니다.

편집 : 스크립트가 웹에서 xml 및 soap 데이터를 가져 와서 필요한 부분을 추출합니다.

+2

스크립트의 10 개의 서브 루틴은 그다지 많지 않습니다. 스크립트를 분할해도 실행 시간에 큰 영향을 미치지 않습니다 (수천 줄). 스크립트가 수행하는 작업과 수행 방법에 대한 세부 정보가 없으면 더 이상 도움을주지 못합니다. – Barmar

답변

0

아마도 LWP::Parallel 모듈을 확인하고 싶을 것입니다.

ParallelUserAgent는 기존 libwww 모듈의 확장입니다. 은 URL (현재 HTTP, FTP, 및 FILE URL을 지원하며 HTTPS가 작동 할 수도 있음) 목록을 가져와 ( 평행)에 모두 연결 한 다음 결과가 나타날 때까지 기다립니다.

+0

감사합니다. 내 요구 사항에 가장 부합합니다. – 3und80

0

원한다면 파일을 분할하지 않아도됩니다. STDIN을 실행하기위한 목록을 가져 와서 스크립트를 여러 번 백그라운드로 실행하거나 cron을 사용하십시오.

더 이상 그렇게하지 않을 이유가있을 때까지 운영 체제 프로세스를 사용하는 것이 좋습니다.

+0

다른 솔루션보다 많은 메모리를 사용하게 될 것입니다. 고마워 여하튼 – 3und80

+0

당신은 이것으로 무엇을 의미합니까? 메모리 사용량은 일정 기간 동안 측정 된 값입니다. 프로세스 중 하나의 메모리 사용량을 그래프로 보면 프로세스가 종료 될 때까지 메모리 사용량이 계속 증가하는 것을 볼 수 있습니다. 작업을 별도의 OS 프로세스로 분리하면 전반적으로 더 많은 메모리를 사용할 수 있습니다. 그러나 프로세스마다 짧은 시간 동안 소량의 메모리를 사용하게됩니다.또한 미래에 메모리/디스크 IO/네트워크의 한계에 도달하면 새 노드를 추가하기가 쉽습니다. – latj