def coro(): executor = ThreadPoolExecutor(100) fs = [] for _ in range(5000): f = executor.submit(demo) f.add_done_callback(_callback) fs.append(f) yield wait(fs)
def test_future_thread_safe(self): def demo(): pass def _callback(f): pass @coroutine2 def coro(): executor = ThreadPoolExecutor(100) fs = [] for _ in range(5000): f = executor.submit(demo) f.add_done_callback(_callback) fs.append(f) yield wait(fs) f = wait([coro() for _ in range(5)]) run_until_complete(f) f.result()
def test_wait(self): futures = [self._simple_task() for _ in range(5)] self.assertFalse(any([f.done() for f in futures])) gathered = wait(futures) run_until_complete(gathered) self.assertTrue([r == 'ok' for r in gathered.result()])
def test_add_multi_tasks(self): thread_pool = ThreadPoolExecutor(5) futures = [thread_pool.submit(self._fake_task) for _ in range(5)] run_until_complete(wait(futures)) for f in futures: self.assertEqual(f.result(), 2)