English
Atom Login Admin

Seeds of mention

Google App Engine Pipeline API

lakshmi@cloudysunny14.org
mentioned on Sunday,January 27,2013

まず、Google App Engine Pipline APIって何?って思う方もいるだろう。
簡単に説明するとカスケード上に処理をつなぎ合わせる事が出来て、
並列処理を行うこともできるフレームワークだ。
下記のように簡単なサンプルを実行してみるとよい。

import unittest
import pipeline

class DivideWithRemainder(pipeline.Pipeline):

  output_names = ['remainder']

  def run(self, dividend, divisor):
    self.fill(self.outputs.remainder, dividend % divisor)
    return dividend // divisor

class EuclidGCD(pipeline.Pipeline):

  output_names = ['gcd']

  def run(self, a, b):
    a, b = max(a, b), min(a, b)
    if b == 0:
      self.fill(self.outputs.gcd, a)
      return
    result = yield DivideWithRemainder(a, b)
    recurse = yield EuclidGCD(b, result.remainder)

class GCDTest(unittest.TestCase):
  def setUp(self):
    """Initialize temporary application variable."""
    unittest.TestCase.setUp(self)
    pipeline.testutil.setup_for_testing()

  def testGCD(self):
    """Test for GCD Pipeline"""
    stage = EuclidGCD(1071, 462)
    stage.start_test()
    self.assertEqual(21, stage.outputs.gcd.value)

if __name__ == "__main__":
  unittest.main()
  • Run&Result
.
----------------------------------------------------------------------
Ran 1 test in 0.276s

OK

このフレームワークは主に並列処理に有用だが、非同期オペレーションも
サポートされており、例えば、ユーザーのオペレーションも絡めたジョブを
非同期で行う事もできる。
また、このフレームワークを応用して作られたのが、
Google App Enigine Mapreduceである。また、自分のプロジェクトlakshmiクローラもこのフレームワークを利用している。

Comments

Add Comment

Login
This entry was tagged #GAE