コード例 #1
0
ファイル: pool.py プロジェクト: philippp/greenhouse
class OneWayPool(object):
    def __init__(self, func, size=10):
        self.func = func
        self.size = size
        self.inq = Queue()

    def start(self):
        for i in xrange(self.size):
            schedule(self._runner)

    def close(self):
        for i in xrange(self.size):
            self.inq.put(_STOP)

    def _runner(self):
        while 1:
            input = self.inq.get()
            if input is _STOP:
                break
            self._handle_one(input)

    def _handle_one(self, input):
        self.func(*(input[0]), **(input[1]))

    def put(self, *args, **kwargs):
        self.inq.put((args, kwargs))

    def __enter__(self):
        self.start()
        return self

    def __exit__(self, klass, value, tb):
        self.close()
コード例 #2
0
ファイル: pool.py プロジェクト: philippp/greenhouse
class Pool(OneWayPool):
    def __init__(self, *args, **kwargs):
        super(Pool, self).__init__(*args, **kwargs)
        self.outq = Queue()

    def _handle_one(self, input):
        self.outq.put(self.func(*(input[0]), **(input[1])))

    def get(self):
        return self.outq.get()
コード例 #3
0
ファイル: pool.py プロジェクト: philippp/greenhouse
 def __init__(self, *args, **kwargs):
     super(Pool, self).__init__(*args, **kwargs)
     self.outq = Queue()
コード例 #4
0
ファイル: pool.py プロジェクト: philippp/greenhouse
 def __init__(self, func, size=10):
     self.func = func
     self.size = size
     self.inq = Queue()