我有一个 Perl 脚本,它(截至目前)有 10 个子并且还在增长..
每个 sub 都在进行不同的 LWP-Call,并使用我在第一个 sub 中设置的变量。
由于每个子都需要一些时间,我正在寻找一种聪明的方法来使脚本运行得更快。
你会推荐什么?
我是不是该:
- 将每个子放入单独的脚本中?
- 立即呼叫潜艇(第一个除外)?
- 使用不同的解决方案(我不知道)?
提前致谢!
编辑:该脚本正在从网络上获取一些 xml 和肥皂数据,然后提取必要的部分。
我有一个 Perl 脚本,它(截至目前)有 10 个子并且还在增长..
每个 sub 都在进行不同的 LWP-Call,并使用我在第一个 sub 中设置的变量。
由于每个子都需要一些时间,我正在寻找一种聪明的方法来使脚本运行得更快。
你会推荐什么?
我是不是该:
提前致谢!
编辑:该脚本正在从网络上获取一些 xml 和肥皂数据,然后提取必要的部分。
我已经成功使用 Coro,并且已经有一个模块可以执行 LWP 请求。
http://metacpan.org/pod/LWP::Protocol::Coro::http
Coro 是协作例程,因此不是多线程的。还有一个 AnyEvent 变体
您可能需要检查 LWP::Parallel模块。
ParallelUserAgent 是现有 libwww 模块的扩展。它允许您获取 URL 列表(它目前支持 HTTP、FTP 和 FILE URL。HTTPS 也可以工作)并并行连接到所有这些 URL ,然后等待结果出现。
如果您不想,您不必拆分文件。只需列出要在 STDIN 上运行的内容,然后多次执行脚本,将每个进程置于后台,或者使用 cron 如果它正在进行中。
我建议您使用操作系统的进程,直到您有充分的理由不再这样做。