def test_basic(self): n = 50 def producer(q): for i in range(n): q.put(1) def consumer(q, total): while q.ok(): value = q.get() if value is None: break total.var += value # one consumer total = NonlocalObject(0) q = TaskQueue(producer, [partial(consumer, total=total)]) q.run() self.assertEqual(total.var, n) # two consumers total_1 = NonlocalObject(0) total_2 = NonlocalObject(0) q = TaskQueue(producer, [partial(consumer, total=total_1), partial(consumer, total=total_2)]) q.run() self.assertEqual(total_1.var + total_2.var, n)
def test_more_consumers(self): n = 10 def producer(q): for i in range(n): q.put(1) def consumer(q, total): while q.ok(): value = q.get() if value is None: break total.var += value total_list = [NonlocalObject(0) for i in range(n*2)] consumer_list = [partial(consumer, total=total) for total in total_list] q = TaskQueue(producer, consumer_list) q.run() result = sum(total.var for total in total_list) self.assertEqual(result, n)