class ThreadPool(object): def __init__(self, num_workers=None, max_workers=None): self._threads = [] self._queue = Queue() for _ in range(num_workers): self._threads.append(_PoolThread(self._queue)) def execute(self, func, *args, **kwargs): self._queue.put(functools.partial(func, *args, **kwargs)) def stop(self): for t in self._threads: t.stop()
class QueueTestCase(unittest.TestCase): def setUp(self): self.queue = Queue() def testSetGet(self): self.queue.put(1) self.queue.put(2) self.queue.put(3) self.assertEqual(self.queue.get(), 1) self.assertEqual(self.queue.get(), 2) self.assertEqual(self.queue.get(), 3) def testSetGet2(self): self.queue.put(1) self.assertEqual(self.queue.get(), 1) self.queue.put(2) self.assertEqual(self.queue.get(), 2) def testEmpty(self): self.assertRaises(Empty, self.queue.get)