Technology

Parallel::ForkManagerと2nxというサービス

Perlのforkは基本的には親プロセスから子プロセスを派生させるというもので、使いかたによって複数の子プロセスを走らせることができます。でもなんかめんどそーだなあと思って調べていると、Parallel::ForkManagerというパッケージを発見しました。

http://perldoc.jp/docs/modules/Parallel-ForkManager-0.7.5/ForkManager.pod

ForkManagerに子プロセスの数を与えてインスタンスを作り、あとはそのインスタンスのstart関数を呼べば、子プロセスが動きだします。end関数までが子プロセスの範囲で分かりやすく、並列処理の管理はForkManagerがやってくれるので、面倒なコードを書かずにすみます。

このパッケージを使って、3か月以上放置していた2nx(http://2nx.info)という2NNに似たサービスを復旧させることができました。というのも、実は、2nxでは全ての処理を直列に実行させていました。そのため、ページ更新に時間がかかり、並列化がどうしても必要でした。が、何もせずここまでだーらだーらと来てしまいました…。

ということで、Parallel::ForkManagerを使うにうってつけの材料ということで、2nxで並列にできるところは並列化しました。これによって更新時間も短縮でき、サービスとしてまた動かせることができそうです。

もう少ししたらサイトデザインも変えてみたいと思います。

そんな水曜日でした。


Topic