Exemple #1
0
def test_threadpool_chain_adapters():
    class BlueAdder(ThreadPool):
        "like BlackAdder, but returns a string"
        def __init__(self):
            ThreadPool.__init__(self, poolsize=5, output_queue=TaskQueue())

        def _do(self, job):
            return "%d" % (job + 1)
    
    def adapt_blue_input(item):
        return int(item)

    ba = ThreadPoolChain()
    
    # make a chain of 5 blue adders
    for i in range(5):
        tp = BlueAdder()
        ba.append(tp, QueueInputAdapter(tp.input_queue, adapt_blue_input))

    inputs = 20
    for i in range(inputs):
        ba.input_queue.put(i)

    ba.start()
    ba.join()

    assert ba.output_queue.qsize() == inputs

    outputs = []
    while ba.output_queue.qsize() > 0: 
        outputs.append(ba.output_queue.get())

    for i in range(5, inputs+5):
        assert "%d" % i in outputs
Exemple #2
0
def test_threadpool_chain():
    ba = ThreadPoolChain()
    
    # make a chain of 5 black adders
    for i in range(5):
        ba.append(BlackAdder())


    inputs = 20
    for i in range(inputs):
        ba.input_queue.put(i)

    ba.start()
    ba.join()

    assert ba.output_queue.qsize() == inputs

    outputs = []
    while ba.output_queue.qsize() > 0: 
        outputs.append(ba.output_queue.get())

    for i in range(5, inputs+5):
        assert i in outputs