コード例 #1
0
ファイル: test_futures.py プロジェクト: mpi4py/mpi4py
 def test_duplicate_futures(self):
     py_version = sys.version_info[:3]
     if py_version[0] == 3 and py_version < (3, 3, 5): return
     # Issue 20367. Duplicate futures should not raise exceptions or give
     # duplicate responses.
     future1 = self.executor.submit(time.sleep, 0.1)
     completed = [f for f in futures.as_completed([future1, future1])]
     self.assertEqual(len(completed), 1)
コード例 #2
0
ファイル: test_futures.py プロジェクト: mpi4py/mpi4py
    def test_no_timeout(self):
        future1 = self.executor.submit(mul, 2, 21)
        future2 = self.executor.submit(mul, 7, 6)

        completed = set(futures.as_completed(
                [CANCELLED_AND_NOTIFIED_FUTURE,
                 EXCEPTION_FUTURE,
                 SUCCESSFUL_FUTURE,
                 future1, future2]))
        self.assertEqual(set(
                [CANCELLED_AND_NOTIFIED_FUTURE,
                 EXCEPTION_FUTURE,
                 SUCCESSFUL_FUTURE,
                 future1, future2]),
                completed)
コード例 #3
0
ファイル: test_futures.py プロジェクト: mpi4py/mpi4py
    def test_zero_timeout(self):
        future1 = self.executor.submit(time.sleep, 0.2)
        completed_futures = set()
        try:
            for future in futures.as_completed(
                    [CANCELLED_AND_NOTIFIED_FUTURE,
                     EXCEPTION_FUTURE,
                     SUCCESSFUL_FUTURE,
                     future1],
                    timeout=0):
                completed_futures.add(future)
        except futures.TimeoutError:
            pass

        self.assertEqual(set([CANCELLED_AND_NOTIFIED_FUTURE,
                              EXCEPTION_FUTURE,
                              SUCCESSFUL_FUTURE]),
                         completed_futures)
コード例 #4
0
ファイル: test_futures.py プロジェクト: zuoxiaojiang/mpi4py
    def test_zero_timeout(self):
        future1 = self.executor.submit(time.sleep, 0.5)
        completed_futures = set()
        try:
            for future in futures.as_completed([
                    CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE,
                    SUCCESSFUL_FUTURE, future1
            ],
                                               timeout=0):
                completed_futures.add(future)
        except futures.TimeoutError:
            pass

        self.assertEqual(
            set([
                CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE,
                SUCCESSFUL_FUTURE
            ]), completed_futures)
コード例 #5
0
def as_completed(futures):
    ptypes = [type(f.executor) for f in futures]
    assert len(set(ptypes)) == 1
    ptype = ptypes[0]

    threads = [f for f in futures if f.kind == 'thread']
    processes = [f for f in futures if f.kind == 'process']

    if processes:
        proc_dct = {f.process: f for f in futures}
        if ptype == EnhancedMPIPoolExecutor:
            from mpi4py.futures import as_completed
        else:
            from concurrent.futures import as_completed
        for future in as_completed(proc_dct):
            yield proc_dct[future]

    if threads:
        for future in threads:
            yield future
コード例 #6
0
ファイル: test_futures.py プロジェクト: mpi4py/mpi4py
 def test_duplicate_futures(self):
     # Issue 20367. Duplicate futures should not raise exceptions or give
     # duplicate responses.
     future1 = self.executor.submit(time.sleep, 0.1)
     completed = [f for f in futures.as_completed([future1, future1])]
     self.assertEqual(len(completed), 1)