def test_A_pool_breathing(self): input_list = list(xrange(100)) job_list = [_TestJob(i) for i in input_list] max_workers = multiprocessing.cpu_count() pool = phlmp_cyclingpool._Pool(job_list, max_workers) # [ A] _Pool has nonzero workers before finishing work self.assertTrue(pool.count_active_workers() > 0) for i in input_list: pool.add_job_index(i) pool.finish() result_list = [] while not pool.is_finished(): pool.join_finished_workers() for index, result in pool.yield_available_results(): # [ A] _Pool returns correct results for the job indices self.assertEqual(index, result) result_list.append(result) # [ A] _Pool has zero workers after finishing work self.assertEqual(pool.count_active_workers(), 0) # [ A] _Pool finishes all jobs added to it self.assertSetEqual( set(result_list), set(input_list))
def test_B_poollist_breathing(self): max_workers = multiprocessing.cpu_count() input_list = list(xrange(max_workers)) job_list = [_TestJob(i) for i in input_list] pool_list = phlmp_cyclingpool._PoolList() pool = phlmp_cyclingpool._Pool(job_list, max_workers) for i in input_list: pool.add_job_index(i) pool.finish() pool_list.add_pool(pool) # [ B] _PoolList workers are all active before yielding results self.assertEqual( pool_list.count_active_workers(), max_workers) result_list = [] while not pool_list.is_yield_finished(): for index, result in pool_list.yield_available_results(): # [ B] _PoolList returns correct results for the job indices self.assertEqual(index, result) result_list.append(result) # [ B] _PoolList has zero active workers after finishing work self.assertFalse(pool_list.count_active_workers()) # [ B] _Pool finishes all jobs added to it self.assertSetEqual( set(result_list), set(input_list))