2013-06-28 25 views
0

我有一個Perl腳本,它有(現在)10個潛艇和不斷增長..Perl:用於(分割)大型腳本的最智能和最快捷的方式?

每個子進行不同的LWP調用,並與我在第一個子集中設置的變量一起工作。

由於每個子需要一些時間,我正在尋找一種智能方法來使腳本運行得更快。

你會怎麼推薦?

我應該:

  • 把每個子成一個單獨的腳本?
  • 立即調用潛艇(第一輛除外)?
  • 使用不同的解決方案(我不知道)?

在此先感謝!

編輯: 該腳本從網上獲取一些xml和soap數據,然後提取必要的部分。

+2

腳本中的10個子程序不是很多。分割腳本不會顯着影響運行時間,除非它巨大(數千行)。沒有關於腳本正在做什麼以及如何做的更多細節,很難再提供幫助。 – Barmar

回答

0

您可能想檢查LWP::Parallel模塊。

ParallelUserAgent是對現有libwww模塊的擴展。它 允許您獲取一個URL列表(它目前支持HTTP,FTP, 和FILE URLs,HTTPS也可能工作),並且連接到所有這些URL 並行,然後等待結果進入。

+0

謝謝,它最適合我的需求 – 3und80

0

如果你不想分割文件,你不必分割文件。只需要列出一些在STDIN上運行的東西,然後多次執行腳本將每個進程放在後臺,或者使用cron(如果它正在執行)。

我會推薦使用操作系統的進程,直到你有一個很好的理由不再這樣做。

+0

我相信這會比其他解決方案使用更多的內存。謝謝 – 3und80

+0

這是什麼意思,什麼使你相信它?內存使用量是在一定時間範圍內測量的。如果您對某個進程的內存使用情況進行了圖形化處理,則會看到內存使用量持續增長,直到進程退出 - 無論這需要多長時間。如果將工作分解爲獨立的OS進程,則可以使用更多內存。但是每個進程都會在短時間內使用少量內存。另外,如果將來你遇到了一些內存/磁盤IO /網絡的限制,那麼添加新節點將很容易。 – latj