Parallel::Preforkの真似してPythonPreforkを作ってみた

perlでクローラっぽいプログラムを書くのに欠かせないParallel::Preforkですが、pythonでもクローラを書きたいので、真似してモジュールを作ってみました。

Parallel::Preforkと同じ感覚でpreforkなマルチプロセス処理を書けるのですが、サンプル見た方が早いと思うので、以下を参照ください。

import signal
from python_prefork import PythonPrefork

pp = PythonPrefork(max_workers=10, trap_signals=[signal.SIGTERM])
while not pp.signal_received:
  if pp.start(): continue

  run()          # 子プロセス内で行いたい事をここに書く

  pp.finish()  # 子プロセスの終了
pp.wait_all_children()  

このようにwhile文の中に子プロセス内で処理したい事を書きます。whileの中の1行目が気持ち悪いのですが、個人的には許容範囲という事でGOしました。

先日書いたDaemonContextと組み合わせると、いい感じでクローラデーモンが作れるので、クローラとかダウンローダの類のプログラムをpythonで書くのに便利だと思います。

調子にのってpypiにも登録したので、インストールはeasy_installで一発です。なので使ってみて下さい。

$ easy_install python_prefork

ちなみにソースコードはこちらになりまして、突っ込み頂けたら泣いて喜びます。

Leave a Reply

Your email address will not be published. Required fields are marked *